diff options
author | Guido van Rossum <guido@python.org> | 1996-11-09 22:32:05 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1996-11-09 22:32:05 (GMT) |
commit | 08ef9d98b2530d0a8e835ef4fb0a2a5f8bf64ced (patch) | |
tree | dc9b3baa4e73a2b0c98dd50be06731ad07cae7cb | |
parent | 115c1144ea5298b0c2e839412b5b98b11d840be9 (diff) | |
download | cpython-08ef9d98b2530d0a8e835ef4fb0a2a5f8bf64ced.zip cpython-08ef9d98b2530d0a8e835ef4fb0a2a5f8bf64ced.tar.gz cpython-08ef9d98b2530d0a8e835ef4fb0a2a5f8bf64ced.tar.bz2 |
Only call sq_length in Sequence_GetItem for negative index.
-rw-r--r-- | Objects/abstract.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/Objects/abstract.c b/Objects/abstract.c index bb197a5..8d07cfa 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -666,12 +666,14 @@ PySequence_GetItem(s, i) if(! s) return Py_ReturnNullError(); - if(! ((m=s->ob_type->tp_as_sequence) && m->sq_length && m->sq_item)) + if(! ((m=s->ob_type->tp_as_sequence) && m->sq_item)) return Py_ReturnMethodError("__getitem__"); - if(0 > (l=m->sq_length(s))) return NULL; - - if(i < 0) i += l; + if(i < 0) + { + if(0 > (l=m->sq_length(s))) return NULL; + i += l; + } return m->sq_item(s,i); } |