From eb079f1c2533bcefcab3ef4c07b800e5bd37239f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Thu, 16 Feb 2006 14:32:27 +0000 Subject: Use Py_ssize_t for counts and sizes. Convert Py_ssize_t using PyInt_FromSsize_t --- Objects/abstract.c | 4 ++-- Objects/enumobject.c | 6 +++--- Objects/iterobject.c | 2 +- Objects/listobject.c | 8 ++++---- Objects/methodobject.c | 6 +++--- Objects/stringobject.c | 10 +++++----- Objects/structseq.c | 2 +- Objects/tupleobject.c | 7 ++++--- Objects/typeobject.c | 17 +++++++++-------- Objects/unicodeobject.c | 2 +- 10 files changed, 33 insertions(+), 31 deletions(-) diff --git a/Objects/abstract.c b/Objects/abstract.c index 3fe7a7e..a7cc0d6 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -1170,7 +1170,7 @@ PySequence_Repeat(PyObject *o, Py_ssize_t count) to nb_multiply if o appears to be a sequence. */ if (PySequence_Check(o)) { PyObject *n, *result; - n = PyInt_FromLong(count); + n = PyInt_FromSsize_t(count); if (n == NULL) return NULL; result = binary_op1(o, n, NB_SLOT(nb_multiply)); @@ -1222,7 +1222,7 @@ PySequence_InPlaceRepeat(PyObject *o, Py_ssize_t count) if (PySequence_Check(o)) { PyObject *n, *result; - n = PyInt_FromLong(count); + n = PyInt_FromSsize_t(count); if (n == NULL) return NULL; result = binary_iop1(o, n, NB_SLOT(nb_inplace_multiply), diff --git a/Objects/enumobject.c b/Objects/enumobject.c index e6e5bc5..ea85e3c 100644 --- a/Objects/enumobject.c +++ b/Objects/enumobject.c @@ -159,14 +159,14 @@ PyTypeObject PyEnum_Type = { typedef struct { PyObject_HEAD - long index; + Py_ssize_t index; PyObject* seq; } reversedobject; static PyObject * reversed_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { - long n; + Py_ssize_t n; PyObject *seq; reversedobject *ro; @@ -249,7 +249,7 @@ reversed_len(reversedobject *ro) if (seqsize == -1) return NULL; position = ro->index + 1; - return PyInt_FromLong((seqsize < position) ? 0 : position); + return PyInt_FromSsize_t((seqsize < position) ? 0 : position); } PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it))."); diff --git a/Objects/iterobject.c b/Objects/iterobject.c index 6f7c57e..51f551b 100644 --- a/Objects/iterobject.c +++ b/Objects/iterobject.c @@ -82,7 +82,7 @@ iter_len(seqiterobject *it) return NULL; len = seqsize - it->it_index; if (len >= 0) - return PyInt_FromLong(len); + return PyInt_FromSsize_t(len); } return PyInt_FromLong(0); } diff --git a/Objects/listobject.c b/Objects/listobject.c index c083ffc..8b5771b 100644 --- a/Objects/listobject.c +++ b/Objects/listobject.c @@ -2504,13 +2504,13 @@ static int list_ass_subscript(PyListObject* self, PyObject* item, PyObject* value) { if (PyInt_Check(item)) { - long i = PyInt_AS_LONG(item); + Py_ssize_t i = PyInt_AS_LONG(item); if (i < 0) i += PyList_GET_SIZE(self); return list_ass_item(self, i, value); } else if (PyLong_Check(item)) { - long i = PyLong_AsLong(item); + Py_ssize_t i = PyInt_AsSsize_t(item); if (i == -1 && PyErr_Occurred()) return -1; if (i < 0) @@ -2818,7 +2818,7 @@ PyTypeObject PyListIter_Type = { typedef struct { PyObject_HEAD - long it_index; + Py_ssize_t it_index; PyListObject *it_seq; /* Set to NULL when iterator is exhausted */ } listreviterobject; @@ -2860,7 +2860,7 @@ static PyObject * listreviter_next(listreviterobject *it) { PyObject *item; - long index = it->it_index; + Py_ssize_t index = it->it_index; PyListObject *seq = it->it_seq; if (index>=0 && index < PyList_GET_SIZE(seq)) { diff --git a/Objects/methodobject.c b/Objects/methodobject.c index 5e920a2..8e3bf86 100644 --- a/Objects/methodobject.c +++ b/Objects/methodobject.c @@ -65,7 +65,7 @@ PyCFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) PyCFunctionObject* f = (PyCFunctionObject*)func; PyCFunction meth = PyCFunction_GET_FUNCTION(func); PyObject *self = PyCFunction_GET_SELF(func); - long size; + Py_ssize_t size; switch (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST)) { case METH_VARARGS: @@ -81,7 +81,7 @@ PyCFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) if (size == 0) return (*meth)(self, NULL); PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%ld given)", + "%.200s() takes no arguments (%zd given)", f->m_ml->ml_name, size); return NULL; } @@ -92,7 +92,7 @@ PyCFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) if (size == 1) return (*meth)(self, PyTuple_GET_ITEM(arg, 0)); PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%ld given)", + "%.200s() takes exactly one argument (%zd given)", f->m_ml->ml_name, size); return NULL; } diff --git a/Objects/stringobject.c b/Objects/stringobject.c index 8821dcec..733d342 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -1030,7 +1030,7 @@ string_contains(PyObject *a, PyObject *el) const char *sub = PyString_AS_STRING(el); char *last; Py_ssize_t len_sub = PyString_GET_SIZE(el); - int shortsub; + Py_ssize_t shortsub; char firstchar, lastchar; if (!PyString_CheckExact(el)) { @@ -2942,11 +2942,11 @@ PyDoc_STRVAR(zfill__doc__, static PyObject * string_zfill(PyStringObject *self, PyObject *args) { - long fill; + Py_ssize_t fill; PyObject *s; char *p; - int width; + long width; if (!PyArg_ParseTuple(args, "l:zfill", &width)) return NULL; @@ -3886,7 +3886,7 @@ PyObject * PyString_Format(PyObject *format, PyObject *args) { char *fmt, *res; - int arglen, argidx; + Py_ssize_t arglen, argidx; Py_ssize_t reslen, rescnt, fmtcnt; int args_owned = 0; PyObject *result, *orig_args; @@ -4294,7 +4294,7 @@ PyString_Format(PyObject *format, PyObject *args) /* Fiddle args right (remove the first argidx arguments) */ if (PyTuple_Check(orig_args) && argidx > 0) { PyObject *v; - int n = PyTuple_GET_SIZE(orig_args) - argidx; + Py_ssize_t n = PyTuple_GET_SIZE(orig_args) - argidx; v = PyTuple_New(n); if (v == NULL) goto error; diff --git a/Objects/structseq.c b/Objects/structseq.c index 023a1fd..b266d6a 100644 --- a/Objects/structseq.c +++ b/Objects/structseq.c @@ -247,7 +247,7 @@ structseq_reduce(PyStructSequence* self) PyObject* tup; PyObject* dict; PyObject* result; - long n_fields, n_visible_fields, n_unnamed_fields; + Py_ssize_t n_fields, n_visible_fields, n_unnamed_fields; int i; n_fields = REAL_SIZE(self); diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c index 2de2899..95debbb 100644 --- a/Objects/tupleobject.c +++ b/Objects/tupleobject.c @@ -278,7 +278,8 @@ tuplehash(PyTupleObject *v) if (y == -1) return -1; x = (x ^ y) * mult; - mult += 82520L + len + len; + /* the cast might truncate len; that doesn't change hash stability */ + mult += (long)(82520L + len + len); } x += 97531L; if (x == -1) @@ -850,10 +851,10 @@ tupleiter_next(tupleiterobject *it) static PyObject * tupleiter_len(tupleiterobject *it) { - long len = 0; + Py_ssize_t len = 0; if (it->it_seq) len = PyTuple_GET_SIZE(it->it_seq) - it->it_index; - return PyInt_FromLong(len); + return PyInt_FromSsize_t(len); } PyDoc_STRVAR(length_hint_doc, "Private method returning an estimate of len(list(it))."); diff --git a/Objects/typeobject.c b/Objects/typeobject.c index ac1e064..00ae88b 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1561,11 +1561,11 @@ valid_identifier(PyObject *s) /* Replace Unicode objects in slots. */ static PyObject * -_unicode_to_string(PyObject *slots, int nslots) +_unicode_to_string(PyObject *slots, Py_ssize_t nslots) { PyObject *tmp = slots; PyObject *o, *o1; - int i; + Py_ssize_t i; ssizessizeargfunc copy = slots->ob_type->tp_as_sequence->sq_slice; for (i = 0; i < nslots; i++) { if (PyUnicode_Check(o = PyTuple_GET_ITEM(tmp, i))) { @@ -2428,7 +2428,7 @@ static int same_slots_added(PyTypeObject *a, PyTypeObject *b) { PyTypeObject *base = a->tp_base; - int size; + Py_ssize_t size; if (base != b->tp_base) return 0; @@ -2904,7 +2904,7 @@ add_getset(PyTypeObject *type, PyGetSetDef *gsp) static void inherit_special(PyTypeObject *type, PyTypeObject *base) { - int oldsize, newsize; + Py_ssize_t oldsize, newsize; /* Special flag magic */ if (!type->tp_as_buffer && base->tp_as_buffer) { @@ -3316,7 +3316,8 @@ PyType_Ready(PyTypeObject *type) static int add_subclass(PyTypeObject *base, PyTypeObject *type) { - int i; + Py_ssize_t i; + int result; PyObject *list, *ref, *new; list = base->tp_subclasses; @@ -3334,9 +3335,9 @@ add_subclass(PyTypeObject *base, PyTypeObject *type) if (PyWeakref_GET_OBJECT(ref) == Py_None) return PyList_SetItem(list, i, new); } - i = PyList_Append(list, new); + result = PyList_Append(list, new); Py_DECREF(new); - return i; + return result; } static void @@ -4160,7 +4161,7 @@ slot_sq_item(PyObject *self, Py_ssize_t i) return NULL; } } - ival = PyInt_FromLong(i); + ival = PyInt_FromSsize_t(i); if (ival != NULL) { args = PyTuple_New(1); if (args != NULL) { diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 684706d..eaf9837 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -6541,7 +6541,7 @@ unicode_buffer_getsegcount(PyUnicodeObject *self, return 1; } -static int +static Py_ssize_t unicode_buffer_getcharbuf(PyUnicodeObject *self, Py_ssize_t index, const void **ptr) -- cgit v0.12