py: In str unicode, str_subscr will never be passed a bytes object.
This commit is contained in:
parent
0f6424efda
commit
0528c5a22a
|
@ -170,6 +170,7 @@ const byte *str_index_to_ptr(const mp_obj_type_t *type, const byte *self_data, m
|
||||||
|
|
||||||
STATIC mp_obj_t str_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
|
STATIC mp_obj_t str_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
|
||||||
mp_obj_type_t *type = mp_obj_get_type(self_in);
|
mp_obj_type_t *type = mp_obj_get_type(self_in);
|
||||||
|
assert(type == &mp_type_str);
|
||||||
GET_STR_DATA_LEN(self_in, self_data, self_len);
|
GET_STR_DATA_LEN(self_in, self_data, self_len);
|
||||||
if (value == MP_OBJ_SENTINEL) {
|
if (value == MP_OBJ_SENTINEL) {
|
||||||
// load
|
// load
|
||||||
|
@ -182,22 +183,6 @@ STATIC mp_obj_t str_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
|
||||||
"only slices with step=1 (aka None) are supported"));
|
"only slices with step=1 (aka None) are supported"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == &mp_type_bytes) {
|
|
||||||
mp_int_t start = 0, stop = self_len;
|
|
||||||
if (ostart != mp_const_none) {
|
|
||||||
start = MP_OBJ_SMALL_INT_VALUE(ostart);
|
|
||||||
if (start < 0) {
|
|
||||||
start = self_len + start;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (ostop != mp_const_none) {
|
|
||||||
stop = MP_OBJ_SMALL_INT_VALUE(ostop);
|
|
||||||
if (stop < 0) {
|
|
||||||
stop = self_len + stop;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return mp_obj_new_str_of_type(type, self_data + start, stop - start);
|
|
||||||
}
|
|
||||||
const byte *pstart, *pstop;
|
const byte *pstart, *pstop;
|
||||||
if (ostart != mp_const_none) {
|
if (ostart != mp_const_none) {
|
||||||
pstart = str_index_to_ptr(type, self_data, self_len, ostart, true);
|
pstart = str_index_to_ptr(type, self_data, self_len, ostart, true);
|
||||||
|
@ -217,10 +202,6 @@ STATIC mp_obj_t str_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
|
||||||
return mp_obj_new_str_of_type(type, (const byte *)pstart, pstop - pstart);
|
return mp_obj_new_str_of_type(type, (const byte *)pstart, pstop - pstart);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (type == &mp_type_bytes) {
|
|
||||||
uint index_val = mp_get_index(type, self_len, index, false);
|
|
||||||
return MP_OBJ_NEW_SMALL_INT(self_data[index_val]);
|
|
||||||
}
|
|
||||||
const byte *s = str_index_to_ptr(type, self_data, self_len, index, false);
|
const byte *s = str_index_to_ptr(type, self_data, self_len, index, false);
|
||||||
int len = 1;
|
int len = 1;
|
||||||
if (UTF8_IS_NONASCII(*s)) {
|
if (UTF8_IS_NONASCII(*s)) {
|
||||||
|
|
Loading…
Reference in New Issue