Use Py_ssize_t for counts and sizes.
authorMartin v. Löwis <martin@v.loewis.de>
Thu, 16 Feb 2006 14:32:27 +0000 (14:32 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Thu, 16 Feb 2006 14:32:27 +0000 (14:32 +0000)
Convert Py_ssize_t using PyInt_FromSsize_t

Objects/abstract.c
Objects/enumobject.c
Objects/iterobject.c
Objects/listobject.c
Objects/methodobject.c
Objects/stringobject.c
Objects/structseq.c
Objects/tupleobject.c
Objects/typeobject.c
Objects/unicodeobject.c

index 3fe7a7efbc64b78cf4db9773d35f2fd21c472dc4..a7cc0d65340cebb36ec59cf5c7a6074f866c1ca6 100644 (file)
@@ -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),
index e6e5bc5bba15f1b76efd32647f375ec8a717776c..ea85e3c7480aee192507731e940ec7980478f3fa 100644 (file)
@@ -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)).");
index 6f7c57e5798255afc6ec3ca6c701b8589dfa2049..51f551bf6942d8c2b45d3719ba08e26ce2451bee 100644 (file)
@@ -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);
 }
index c083ffc62f4a822e028131bd081175d42c44e1a6..8b5771bf4e3af2222aacc6ed79b861f69a1528ed 100644 (file)
@@ -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)) {
index 5e920a2c3215541347bf0dd4ce6aa7b27eec7db9..8e3bf867cacc0175358bef7a76d0688515ec51e8 100644 (file)
@@ -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;
                }
index 8821dcecfd8ac3dabbbd629d1ac64b2fd15a72f9..733d3422e60aef247a1987554d886da0d794fcb9 100644 (file)
@@ -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;
index 023a1fdbaabaa786b085b1d33d8a3d9e4414221d..b266d6afa447f7017b21ff5f610d5dca323a3dd1 100644 (file)
@@ -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);
index 2de2899ad18f5259bda0657b49014be838d95019..95debbb8c39bf02a6bf0cf3317cb92d4f3446673 100644 (file)
@@ -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)).");
index ac1e064b84851dc6d0089a1bb54873d712cc3913..00ae88b450a983505122917554a9db55d8596c31 100644 (file)
@@ -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) {
index 684706d96a0eeb5ddf1fd8db56b8b589680f2647..eaf98372c8ee8e37ff120af9466e8f9b3b870190 100644 (file)
@@ -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)