@@ -370,7 +370,7 @@ STATIC mp_obj_t str_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
370370#endif
371371 const byte * p = str_index_to_ptr (type , self_data , self_len , index , false);
372372 if (type == & mp_type_bytes ) {
373- return MP_OBJ_NEW_SMALL_INT (( mp_int_t ) * p );
373+ return MP_OBJ_NEW_SMALL_INT (* p );
374374 } else {
375375 return mp_obj_new_str ((char * )p , 1 , true);
376376 }
@@ -1744,6 +1744,16 @@ mp_obj_t mp_obj_str_builder_end(mp_obj_t o_in) {
17441744 return o ;
17451745}
17461746
1747+ mp_obj_t mp_obj_str_builder_end_with_len (mp_obj_t o_in , mp_uint_t len ) {
1748+ mp_obj_str_t * o = o_in ;
1749+ o -> data = m_renew (byte , (byte * )o -> data , o -> len + 1 , len + 1 );
1750+ o -> len = len ;
1751+ o -> hash = qstr_compute_hash (o -> data , o -> len );
1752+ byte * p = (byte * )o -> data ;
1753+ p [o -> len ] = '\0' ; // for now we add null for compatibility with C ASCIIZ strings
1754+ return o ;
1755+ }
1756+
17471757mp_obj_t mp_obj_new_str_of_type (const mp_obj_type_t * type , const byte * data , uint len ) {
17481758 mp_obj_str_t * o = m_new_obj (mp_obj_str_t );
17491759 o -> base .type = type ;
@@ -1907,7 +1917,7 @@ STATIC mp_obj_t bytes_it_iternext(mp_obj_t self_in) {
19071917 mp_obj_str_it_t * self = self_in ;
19081918 GET_STR_DATA_LEN (self -> str , str , len );
19091919 if (self -> cur < len ) {
1910- mp_obj_t o_out = MP_OBJ_NEW_SMALL_INT (( mp_int_t ) str [self -> cur ]);
1920+ mp_obj_t o_out = MP_OBJ_NEW_SMALL_INT (str [self -> cur ]);
19111921 self -> cur += 1 ;
19121922 return o_out ;
19131923 } else {
0 commit comments