]> granicus.if.org Git - python/commitdiff
Fix more places in Objects/longobject.c where it's silently assumed that
authorMark Dickinson <dickinsm@gmail.com>
Sun, 15 Feb 2009 17:27:41 +0000 (17:27 +0000)
committerMark Dickinson <dickinsm@gmail.com>
Sun, 15 Feb 2009 17:27:41 +0000 (17:27 +0000)
sizeof(digit) < sizeof(int).

Objects/longobject.c

index ead6398db1702b9e39b75f9622605b7d41e1fa39..48a3cde7e6f95ea537938892889c1fc8e410f020 100644 (file)
@@ -47,7 +47,7 @@ get_small_int(sdigit ival)
 }
 #define CHECK_SMALL_INT(ival) \
        do if (-NSMALLNEGINTS <= ival && ival < NSMALLPOSINTS) { \
-               return get_small_int((int)ival); \
+               return get_small_int((sdigit)ival); \
        } while(0)
 
 static PyLongObject * 
@@ -365,7 +365,7 @@ PyLong_AsLongAndOverflow(PyObject *vv, int *overflow)
 
        switch (i) {
        case -1:
-               res = -v->ob_digit[0];
+               res = -(sdigit)v->ob_digit[0];
                break;
        case 0:
                res = 0;
@@ -440,7 +440,7 @@ PyLong_AsSsize_t(PyObject *vv) {
        v = (PyLongObject *)vv;
        i = Py_SIZE(v);
        switch (i) {
-       case -1: return -v->ob_digit[0];
+       case -1: return -(sdigit)v->ob_digit[0];
        case 0: return 0;
        case 1: return v->ob_digit[0];
        }
@@ -1235,7 +1235,7 @@ PyLong_AsLongLong(PyObject *vv)
 
        v = (PyLongObject*)vv;
        switch(Py_SIZE(v)) {
-       case -1: return -v->ob_digit[0];
+       case -1: return -(sdigit)v->ob_digit[0];
        case 0: return 0;
        case 1: return v->ob_digit[0];
        }
@@ -2279,7 +2279,7 @@ long_hash(PyLongObject *v)
           of mapping keys will turn out weird */
        i = Py_SIZE(v);
        switch(i) {
-       case -1: return v->ob_digit[0]==1 ? -2 : -v->ob_digit[0];
+       case -1: return v->ob_digit[0]==1 ? -2 : -(sdigit)v->ob_digit[0];
        case 0: return 0;
        case 1: return v->ob_digit[0];
        }