diff options
Diffstat (limited to 'py/objstr.c')
-rw-r--r-- | py/objstr.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/py/objstr.c b/py/objstr.c index 63d394e0a9..6ec997f4bf 100644 --- a/py/objstr.c +++ b/py/objstr.c @@ -370,7 +370,7 @@ STATIC mp_obj_t str_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) { #endif const byte *p = str_index_to_ptr(type, self_data, self_len, index, false); if (type == &mp_type_bytes) { - return MP_OBJ_NEW_SMALL_INT((mp_int_t)*p); + return MP_OBJ_NEW_SMALL_INT(*p); } else { return mp_obj_new_str((char*)p, 1, true); } @@ -1744,6 +1744,16 @@ mp_obj_t mp_obj_str_builder_end(mp_obj_t o_in) { return o; } +mp_obj_t mp_obj_str_builder_end_with_len(mp_obj_t o_in, mp_uint_t len) { + mp_obj_str_t *o = o_in; + o->data = m_renew(byte, (byte*)o->data, o->len + 1, len + 1); + o->len = len; + o->hash = qstr_compute_hash(o->data, o->len); + byte *p = (byte*)o->data; + p[o->len] = '\0'; // for now we add null for compatibility with C ASCIIZ strings + return o; +} + mp_obj_t mp_obj_new_str_of_type(const mp_obj_type_t *type, const byte* data, uint len) { mp_obj_str_t *o = m_new_obj(mp_obj_str_t); o->base.type = type; @@ -1907,7 +1917,7 @@ STATIC mp_obj_t bytes_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_SMALL_INT((mp_int_t)str[self->cur]); + mp_obj_t o_out = MP_OBJ_NEW_SMALL_INT(str[self->cur]); self->cur += 1; return o_out; } else { |