aboutsummaryrefslogtreecommitdiff
path: root/py/objrange.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2017-05-18 10:33:23 +1000
committerDamien George <damien.p.george@gmail.com>2017-05-18 17:32:42 +1000
commit03659c51ca70dbf89d97cc9c68725a687d3841d1 (patch)
tree13dcc706c3cf116dc745d9c727b13723c2029bc3 /py/objrange.c
parente1b0f2a16fc03fe5127e74626a249d8f395d8d58 (diff)
py/objrange: Fix slicing of range when step of slice is negative.
Diffstat (limited to 'py/objrange.c')
-rw-r--r--py/objrange.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/py/objrange.c b/py/objrange.c
index c78c53f11..8c4e14f49 100644
--- a/py/objrange.c
+++ b/py/objrange.c
@@ -154,6 +154,10 @@ STATIC mp_obj_t range_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
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