From 425f952a1e18e64f19a0330c9c54a3eccb3c4ff7 Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Fri, 23 Jan 2015 17:58:05 +0200
Subject: [PATCH] stream: Fix readall() implementation in respect to NUL
 terminator bytes.

After vstr refactor. Fixes #1084.
---
 py/stream.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/py/stream.c b/py/stream.c
index 3415b74b9..921459a8d 100644
--- a/py/stream.c
+++ b/py/stream.c
@@ -255,7 +255,7 @@ STATIC mp_obj_t stream_readall(mp_obj_t self_in) {
     vstr_t vstr;
     vstr_init(&vstr, DEFAULT_BUFFER_SIZE);
     char *p = vstr.buf;
-    mp_uint_t current_read = DEFAULT_BUFFER_SIZE - 1; // save 1 byte for null termination
+    mp_uint_t current_read = DEFAULT_BUFFER_SIZE;
     while (true) {
         int error;
         mp_uint_t out_sz = o->type->stream_p->read(self_in, p, current_read, &error);
@@ -280,7 +280,7 @@ STATIC mp_obj_t stream_readall(mp_obj_t self_in) {
             p += out_sz;
         } else {
             p = vstr_extend(&vstr, DEFAULT_BUFFER_SIZE);
-            current_read = DEFAULT_BUFFER_SIZE - 1; // save 1 byte for null termination
+            current_read = DEFAULT_BUFFER_SIZE;
             if (p == NULL) {
                 // TODO
                 nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_OSError/*&mp_type_RuntimeError*/, "Out of memory"));
@@ -289,7 +289,6 @@ STATIC mp_obj_t stream_readall(mp_obj_t self_in) {
     }
 
     vstr.len = total_size;
-    vstr.buf[vstr.len] = '\0';
     return mp_obj_new_str_from_vstr(STREAM_CONTENT_TYPE(o->type->stream_p), &vstr);
 }
 
-- 
GitLab