]> granicus.if.org Git - python/commitdiff
Calculate smallest properly (it was off by one) and use proper ssize_t types for...
authorNeal Norwitz <nnorwitz@gmail.com>
Wed, 31 May 2006 07:43:27 +0000 (07:43 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Wed, 31 May 2006 07:43:27 +0000 (07:43 +0000)
Modules/_struct.c

index 1491b2e779fd3818417e639d393dcf78533d7840..6a3c11f4e6f714a5ee6e8ca0b5f326f02bb6c68d 100644 (file)
@@ -309,24 +309,24 @@ static int
 _range_error(const formatdef *f, int is_unsigned)
 {
        if (is_unsigned == 0) {
-               long smallest = 0, largest = 0;
+               Py_ssize_t smallest, largest = 0;
                Py_ssize_t i = f->size * 8;
                while (--i > 0) {
-                       smallest = (smallest * 2) - 1;
                        largest = (largest * 2) + 1;
                }
+               smallest = -largest - 1;
                PyErr_Format(StructError,
-                       "'%c' format requires %ld <= number <= %ld",
+                       "'%c' format requires %zd <= number <= %zd",
                        f->format,
                        smallest,
                        largest);
        } else {
-               unsigned long largest = 0;
+               size_t largest = 0;
                Py_ssize_t i = f->size * 8;
                while (--i >= 0)
                        largest = (largest * 2) + 1;
                PyErr_Format(StructError,
-                       "'%c' format requires 0 <= number <= %lu",
+                       "'%c' format requires 0 <= number <= %zu",
                        f->format,
                        largest);
        }