diff options
author | Damien George <damien.p.george@gmail.com> | 2017-05-18 10:33:23 +1000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2017-05-18 17:32:42 +1000 |
commit | 03659c51ca70dbf89d97cc9c68725a687d3841d1 (patch) | |
tree | 13dcc706c3cf116dc745d9c727b13723c2029bc3 /py/objrange.c | |
parent | e1b0f2a16fc03fe5127e74626a249d8f395d8d58 (diff) |
py/objrange: Fix slicing of range when step of slice is negative.
Diffstat (limited to 'py/objrange.c')
-rw-r--r-- | py/objrange.c | 4 |
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 |