summaryrefslogtreecommitdiffstatshomepage
path: root/py
diff options
context:
space:
mode:
authorTom Collins <tom.collins@digi.com>2017-05-12 13:30:12 -0700
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2017-05-15 23:58:04 +0300
commit53461deb04ecddf3be8b8b03024bb8bbc08b9d6b (patch)
tree40e1c59595a535821081598af09e20e0d43e1c70 /py
parentd5713c8618e8d809f354b6be72b7410dc5ac840a (diff)
downloadmicropython-53461deb04ecddf3be8b8b03024bb8bbc08b9d6b.tar.gz
micropython-53461deb04ecddf3be8b8b03024bb8bbc08b9d6b.zip
py/objstringio: Fix StringIO reads at or beyond EOF.
Existing code failed if seek() went past EOF (which is acceptable when writing).
Diffstat (limited to 'py')
-rw-r--r--py/objstringio.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/py/objstringio.c b/py/objstringio.c
index 88659deb89..f4e7967807 100644
--- a/py/objstringio.c
+++ b/py/objstringio.c
@@ -56,6 +56,9 @@ STATIC mp_uint_t stringio_read(mp_obj_t o_in, void *buf, mp_uint_t size, int *er
(void)errcode;
mp_obj_stringio_t *o = MP_OBJ_TO_PTR(o_in);
check_stringio_is_open(o);
+ if (o->vstr->len <= o->pos) { // read to EOF, or seeked to EOF or beyond
+ return 0;
+ }
mp_uint_t remaining = o->vstr->len - o->pos;
if (size > remaining) {
size = remaining;