From 8faa6bafdc76a6ee307551ef4d88fd2d54db04b2 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Thu, 27 Mar 2025 21:29:01 -0500 Subject: py/objrange: Match CPython range slicing. The "index fixing" behavior of get_fast_slice_indexes are not desired here; the underlying behavior of mp_obj_slice_indexes actually is. Fixes issue #17016. Signed-off-by: Jeff Epler --- py/objrange.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'py/objrange.c') diff --git a/py/objrange.c b/py/objrange.c index 5ccb04fba..1cc575f33 100644 --- a/py/objrange.c +++ b/py/objrange.c @@ -164,15 +164,11 @@ static mp_obj_t range_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) { #if MICROPY_PY_BUILTINS_SLICE if (mp_obj_is_type(index, &mp_type_slice)) { mp_bound_slice_t slice; - mp_seq_get_fast_slice_indexes(len, index, &slice); + mp_obj_slice_indices(index, len, &slice); mp_obj_range_t *o = mp_obj_malloc(mp_obj_range_t, &mp_type_range); o->start = self->start + slice.start * self->step; o->stop = self->start + slice.stop * self->step; o->step = slice.step * self->step; - if (slice.step < 0) { - // Negative slice steps have inclusive stop, so adjust for exclusive - o->stop -= self->step; - } return MP_OBJ_FROM_PTR(o); } #endif -- cgit v1.2.3