summaryrefslogtreecommitdiffstatshomepage
path: root/py
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2025-03-27 21:29:01 -0500
committerDamien George <damien@micropython.org>2025-04-21 17:09:37 +1000
commit8faa6bafdc76a6ee307551ef4d88fd2d54db04b2 (patch)
tree1070b830dc4ac149566a92b65fd8bebdce5e8334 /py
parent760b962924ef5df72310832f87552341565d9325 (diff)
downloadmicropython-8faa6bafdc76a6ee307551ef4d88fd2d54db04b2.tar.gz
micropython-8faa6bafdc76a6ee307551ef4d88fd2d54db04b2.zip
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 <jepler@gmail.com>
Diffstat (limited to 'py')
-rw-r--r--py/objrange.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/py/objrange.c b/py/objrange.c
index 5ccb04fba6..1cc575f33e 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