py: Handle case of slice start > stop in common sequence function.
This commit is contained in:
parent
afaaf535e6
commit
69d081a7cf
@ -355,9 +355,6 @@ STATIC mp_obj_t str_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
|
||||
if (!mp_seq_get_fast_slice_indexes(self_len, index, &start, &stop)) {
|
||||
assert(0);
|
||||
}
|
||||
if (start >= stop) {
|
||||
return MP_OBJ_NEW_QSTR(MP_QSTR_);
|
||||
}
|
||||
return str_new(type, self_data + start, stop - start);
|
||||
}
|
||||
#endif
|
||||
|
@ -88,6 +88,12 @@ bool mp_seq_get_fast_slice_indexes(machine_uint_t len, mp_obj_t slice, machine_u
|
||||
} else if (stop > len) {
|
||||
stop = len;
|
||||
}
|
||||
|
||||
// CPython returns empty sequence in such case, or point for assignment is at start
|
||||
if (start > stop) {
|
||||
stop = start;
|
||||
}
|
||||
|
||||
*begin = start;
|
||||
*end = stop;
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user