From 79b7fe2ee58c1ac46c2fcb74bea69f2810bced5b Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Sat, 14 Jun 2014 02:07:25 +0300 Subject: objstrunicode: Implement iterator. --- py/objstrunicode.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'py/objstrunicode.c') diff --git a/py/objstrunicode.c b/py/objstrunicode.c index e6ca35acbf..d70b33f8fe 100644 --- a/py/objstrunicode.c +++ b/py/objstrunicode.c @@ -330,8 +330,10 @@ STATIC mp_obj_t str_it_iternext(mp_obj_t self_in) { mp_obj_str_it_t *self = self_in; GET_STR_DATA_LEN(self->str, str, len); if (self->cur < len) { - mp_obj_t o_out = mp_obj_new_str((const char*)str + self->cur, 1, true); - self->cur += 1; + const byte *cur = str + self->cur; + const byte *end = utf8_next_char(str + self->cur); + mp_obj_t o_out = mp_obj_new_str((const char*)cur, end - cur, true); + self->cur += end - cur; return o_out; } else { return MP_OBJ_STOP_ITERATION; -- cgit v1.2.3