summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2006-05-31 07:43:27 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2006-05-31 07:43:27 (GMT)
commit971ea11e4c2d9b1e204aa37eac3de9cb36333bcf (patch)
tree482c2c454ded56b1a50c9d329454ac80aeeb17a9
parent14a0952a1ff84b4adefae8381d41fb1799017064 (diff)
downloadcpython-971ea11e4c2d9b1e204aa37eac3de9cb36333bcf.zip
cpython-971ea11e4c2d9b1e204aa37eac3de9cb36333bcf.tar.gz
cpython-971ea11e4c2d9b1e204aa37eac3de9cb36333bcf.tar.bz2
Calculate smallest properly (it was off by one) and use proper ssize_t types for Win64
-rw-r--r--Modules/_struct.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/Modules/_struct.c b/Modules/_struct.c
index 1491b2e..6a3c11f 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -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);
}