diff options
author | Raymond Hettinger <python@rcn.com> | 2008-07-24 07:04:55 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2008-07-24 07:04:55 (GMT) |
commit | 7f59b5cc03cd3e28ec0f877992c439452fef264c (patch) | |
tree | 0357369a29cd5258da104893a71a5a0b518fcf2d | |
parent | 527eee2b32ac73608e2f8ab48000fb0c20512252 (diff) | |
download | cpython-7f59b5cc03cd3e28ec0f877992c439452fef264c.zip cpython-7f59b5cc03cd3e28ec0f877992c439452fef264c.tar.gz cpython-7f59b5cc03cd3e28ec0f877992c439452fef264c.tar.bz2 |
Convert from long to Py_ssize_t.
-rw-r--r-- | Objects/enumobject.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/Objects/enumobject.c b/Objects/enumobject.c index dfa738d..b1e412d 100644 --- a/Objects/enumobject.c +++ b/Objects/enumobject.c @@ -4,10 +4,10 @@ typedef struct { PyObject_HEAD - long en_index; /* current index of enumeration */ + Py_ssize_t en_index; /* current index of enumeration */ PyObject* en_sit; /* secondary iterator of enumeration */ PyObject* en_result; /* result tuple */ - PyObject* en_longindex; /* index for sequences >= LONG_MAX */ + PyObject* en_longindex; /* index for sequences >= PY_SSIZE_T_MAX */ } enumobject; static PyObject * @@ -25,18 +25,19 @@ enum_new(PyTypeObject *type, PyObject *args, PyObject *kwds) en = (enumobject *)type->tp_alloc(type, 0); if (en == NULL) return NULL; - if (start) { + if (start != NULL) { start = PyNumber_Index(start); if (start == NULL) { Py_DECREF(en); return NULL; } - if (PyLong_Check(start)) { - en->en_index = LONG_MAX; + assert(PyInt_Check(start) || PyLong_Check(start)); + en->en_index = PyInt_AsSsize_t(start); + if (en->en_index == -1 && PyErr_Occurred()) { + PyErr_Clear(); + en->en_index = PY_SSIZE_T_MAX; en->en_longindex = start; } else { - assert(PyInt_Check(start)); - en->en_index = PyInt_AsLong(start); en->en_longindex = NULL; Py_DECREF(start); } @@ -85,7 +86,7 @@ enum_next_long(enumobject *en, PyObject* next_item) PyObject *stepped_up; if (en->en_longindex == NULL) { - en->en_longindex = PyInt_FromLong(LONG_MAX); + en->en_longindex = PyInt_FromSsize_t(PY_SSIZE_T_MAX); if (en->en_longindex == NULL) return NULL; } @@ -130,10 +131,10 @@ enum_next(enumobject *en) if (next_item == NULL) return NULL; - if (en->en_index == LONG_MAX) + if (en->en_index == PY_SSIZE_T_MAX) return enum_next_long(en, next_item); - next_index = PyInt_FromLong(en->en_index); + next_index = PyInt_FromSsize_t(en->en_index); if (next_index == NULL) { Py_DECREF(next_item); return NULL; |