Mercurial > cpython-lru_cache-weakref
diff Objects/rangeobject.c @ 17259:12fee7fb019b 2.0
Fixing #121965 -- containment in xrange objects.
| author | Moshe Zadka <moshez@math.huji.ac.il> |
|---|---|
| date | Fri, 30 Mar 2001 16:49:07 +0000 |
| parents | 6f6f965c5e2d |
| children |
line wrap: on
line diff
--- a/Objects/rangeobject.c Fri Mar 30 16:31:50 2001 +0000 +++ b/Objects/rangeobject.c Fri Mar 30 16:49:07 2001 +0000 @@ -2,6 +2,8 @@ /* Range object implementation */ #include "Python.h" +#include "structmember.h" +#include <string.h> typedef struct { PyObject_HEAD @@ -193,21 +195,29 @@ if (num < 0 && PyErr_Occurred()) return -1; - if (num < r->start || (num - r->start) % r->step) - return 0; - if (num > (r->start + (r->len * r->step))) - return 0; + if (r->step > 0) { + if ((num < r->start) || ((num - r->start) % r->step)) + return 0; + if (num >= (r->start + (r->len * r->step))) + return 0; + } + else { + if ((num > r->start) || ((num - r->start) % r->step)) + return 0; + if (num <= (r->start + (r->len * r->step))) + return 0; + } return 1; } static PySequenceMethods range_as_sequence = { - (inquiry)range_length, /*sq_length*/ + (inquiry)range_length, /*sq_length*/ (binaryfunc)range_concat, /*sq_concat*/ (intargfunc)range_repeat, /*sq_repeat*/ (intargfunc)range_item, /*sq_item*/ (intintargfunc)range_slice, /*sq_slice*/ - 0, /*sq_ass_item*/ - 0, /*sq_ass_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ (objobjproc)range_contains, /*sq_contains*/ };
