]> granicus.if.org Git - python/commitdiff
A few more minor fixes in longobject.c
authorMark Dickinson <dickinsm@gmail.com>
Sun, 15 Feb 2009 15:48:39 +0000 (15:48 +0000)
committerMark Dickinson <dickinsm@gmail.com>
Sun, 15 Feb 2009 15:48:39 +0000 (15:48 +0000)
Include/longintrepr.h
Objects/longobject.c

index c32d72c86e833c1a6be154dccee474bd1c978f54..d71329394d4f3ebe59eda9d2162d16b234c80c58 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 af222dea4a82222f066c6ce91968d783a996f53c..6a5a724c8b79926c7ad1f086e70103b4b8054783 100644 (file)
@@ -63,7 +63,7 @@ long_normalize(register PyLongObject *v)
 PyLongObject *
 _PyLong_New(Py_ssize_t size)
 {
-       if (size > MAX_LONG_DIGITS) {
+       if (size > (Py_ssize_t)MAX_LONG_DIGITS) {
                PyErr_SetString(PyExc_OverflowError,
                                "too many digits in integer");
                return NULL;
@@ -1945,7 +1945,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;
                }
@@ -2865,7 +2865,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)
@@ -3099,9 +3099,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;