Merge branch 'master' of github.com:micropython/micropython

Conflicts:
	py/objstr.c
	py/py.mk
	py/stream.c
	unix/main.c
	unix/socket.c
diff --git a/py/stream.c b/py/stream.c
index 88ddc5e..be560d3 100644
--- a/py/stream.c
+++ b/py/stream.c
@@ -30,7 +30,8 @@
         nlr_jump(mp_obj_new_exception_msg_varg(MP_QSTR_OSError, "[Errno %d]", error));
     } else {
         // TODO don't intern this string
-        return mp_obj_new_str(qstr_from_strn_take(buf, sz, out_sz));
+        buf = m_realloc(buf, sz, out_sz);
+        return mp_obj_new_str(qstr_from_strn_take(buf, out_sz, out_sz));
     }
 }
 
@@ -134,9 +135,18 @@
     }
     // TODO don't intern this string
     vstr_shrink(vstr);
-    return mp_obj_new_str(qstr_from_strn_take(vstr_str(vstr), vstr->alloc, vstr_len(vstr)));
+    return MP_OBJ_NEW_QSTR(qstr_from_strn_take(vstr_str(vstr), vstr->alloc, vstr_len(vstr)));
 }
 
+mp_obj_t mp_stream_unbuffered_iter(mp_obj_t self) {
+    mp_obj_t l_in = stream_unbuffered_readline(1, &self);
+    const char *l = qstr_str(MP_OBJ_QSTR_VALUE(l_in));
+    // TODO: \0
+    if (*l != 0) {
+        return l_in;
+    }
+    return mp_const_stop_iteration;
+}
 
 MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_stream_read_obj, 1, 2, stream_read);
 MP_DEFINE_CONST_FUN_OBJ_1(mp_stream_readall_obj, stream_readall);