]> granicus.if.org Git - python/commitdiff
A few more type fixes for py3k that were missed in r69635
authorMark Dickinson <dickinsm@gmail.com>
Sun, 15 Feb 2009 15:14:57 +0000 (15:14 +0000)
committerMark Dickinson <dickinsm@gmail.com>
Sun, 15 Feb 2009 15:14:57 +0000 (15:14 +0000)
Include/longintrepr.h
Objects/longobject.c

index 72f7199bbf0c2a5f3c385fca481c728365ec6605..2dbb3f529606872b7697127749f5b0786d31505e 100644 (file)
@@ -19,6 +19,7 @@ extern "C" {
    long_pow() requires that SHIFT be divisible by 5. */
 
 typedef unsigned short digit;
+typedef short sdigit;                   /* signed variant of digit */
 #define BASE_TWODIGITS_TYPE long
 typedef unsigned BASE_TWODIGITS_TYPE twodigits;
 typedef BASE_TWODIGITS_TYPE stwodigits; /* signed variant of twodigits */
index 4ab60a18512b0a90864d59f54c160f4bffbec419..ead6398db1702b9e39b75f9622605b7d41e1fa39 100644 (file)
 #define NSMALLNEGINTS          5
 #endif
 
-#define MEDIUM_VALUE(x) (Py_SIZE(x) < 0 ? -(x)->ob_digit[0] : \
-                        (Py_SIZE(x) == 0 ? 0 : (x)->ob_digit[0]))
+/* convert a PyLong of size 1, 0 or -1 to an sdigit */
+#define MEDIUM_VALUE(x) (Py_SIZE(x) < 0 ? -(sdigit)(x)->ob_digit[0] :  \
+                        (Py_SIZE(x) == 0 ? (sdigit)0 :                 \
+                         (sdigit)(x)->ob_digit[0]))
 #define ABS(x) ((x) < 0 ? -(x) : (x))
 
 #if NSMALLNEGINTS + NSMALLPOSINTS > 0
@@ -31,7 +33,7 @@ int quick_int_allocs, quick_neg_int_allocs;
 #endif
 
 static PyObject *
-get_small_int(int ival)
+get_small_int(sdigit ival)
 {
        PyObject *v = (PyObject*)(small_ints + ival + NSMALLNEGINTS);
        Py_INCREF(v);
@@ -52,7 +54,7 @@ static PyLongObject *
 maybe_small_long(PyLongObject *v)
 {
        if (v && ABS(Py_SIZE(v)) <= 1) {
-               int ival = MEDIUM_VALUE(v);
+               sdigit ival = MEDIUM_VALUE(v);
                if (-NSMALLNEGINTS <= ival && ival < NSMALLPOSINTS) {
                        Py_DECREF(v);
                        return (PyLongObject *)get_small_int(ival);
@@ -129,7 +131,7 @@ _PyLong_New(Py_ssize_t size)
           sizeof(PyVarObject) instead of the offsetof, but this risks being
           incorrect in the presence of padding between the PyVarObject header
           and the digits. */
-       if (size > MAX_LONG_DIGITS) {
+       if (size > (Py_ssize_t)MAX_LONG_DIGITS) {
                PyErr_SetString(PyExc_OverflowError,
                                "too many digits in integer");
                return NULL;
@@ -154,7 +156,7 @@ _PyLong_Copy(PyLongObject *src)
        if (i < 0)
                i = -(i);
        if (i < 2) {
-               int ival = src->ob_digit[0];
+               sdigit ival = src->ob_digit[0];
                if (Py_SIZE(src) < 0)
                        ival = -ival;
                CHECK_SMALL_INT(ival);
@@ -2142,7 +2144,7 @@ x_divrem(PyLongObject *v1, PyLongObject *w1, PyLongObject **prem)
                        carry += v->ob_digit[i+k] - z
                                + ((twodigits)zz << PyLong_SHIFT);
                        v->ob_digit[i+k] = (digit)(carry & PyLong_MASK);
-                       carry = Py_ARITHMETIC_RIGHT_SHIFT(BASE_TWODIGITS_TYPE,
+                       carry = Py_ARITHMETIC_RIGHT_SHIFT(stwodigits,
                                                          carry, PyLong_SHIFT);
                        carry -= zz;
                }
@@ -2162,7 +2164,7 @@ x_divrem(PyLongObject *v1, PyLongObject *w1, PyLongObject **prem)
                                carry += v->ob_digit[i+k] + w->ob_digit[i];
                                v->ob_digit[i+k] = (digit)(carry & PyLong_MASK);
                                carry = Py_ARITHMETIC_RIGHT_SHIFT(
-                                               BASE_TWODIGITS_TYPE,
+                                               stwodigits,
                                                carry, PyLong_SHIFT);
                        }
                }
@@ -2216,7 +2218,7 @@ long_compare(PyLongObject *a, PyLongObject *b)
                if (i < 0)
                        sign = 0;
                else {
-                       sign = (int)a->ob_digit[i] - (int)b->ob_digit[i];
+                       sign = (sdigit)a->ob_digit[i] - (sdigit)b->ob_digit[i];
                        if (Py_SIZE(a) < 0)
                                sign = -sign;
                }
@@ -3159,7 +3161,7 @@ long_pow(PyObject *v, PyObject *w, PyObject *x)
                for (i = Py_SIZE(b) - 1; i >= 0; --i) {
                        digit bi = b->ob_digit[i];
 
-                       for (j = 1 << (PyLong_SHIFT-1); j != 0; j >>= 1) {
+                       for (j = (digit)1 << (PyLong_SHIFT-1); j != 0; j >>= 1) {
                                MULT(z, z, z)
                                if (bi & j)
                                        MULT(z, a, z)
@@ -3384,9 +3386,8 @@ long_bitwise(PyLongObject *a,
 {
        digit maska, maskb; /* 0 or PyLong_MASK */
        int negz;
-       Py_ssize_t size_a, size_b, size_z;
+       Py_ssize_t size_a, size_b, size_z, i;
        PyLongObject *z;
-       int i;
        digit diga, digb;
        PyObject *v;