{
unsigned int x;
memcpy((char *)&x, p, sizeof x);
- if (x <= LONG_MAX)
+#if (SIZEOF_LONG > SIZEOF_INT)
+ return PyInt_FromLong((long)x);
+#else
+ if (x <= ((unsigned int)LONG_MAX))
return PyInt_FromLong((long)x);
return PyLong_FromUnsignedLong((unsigned long)x);
+#endif
}
static PyObject *
if (get_long(v, &x) < 0)
return -1;
#if (SIZEOF_LONG > SIZEOF_INT)
- if (x < INT_MIN || x > INT_MAX)
+ if ((x < ((long)INT_MIN)) || (x > ((long)INT_MAX)))
return _range_error(f->format, sizeof(y), 0);
#endif
y = (int)x;
return _range_error(f->format, sizeof(y), 1);
y = (unsigned int)x;
#if (SIZEOF_LONG > SIZEOF_INT)
- if (x > UINT_MAX)
+ if (x > ((unsigned long)UINT_MAX))
return _range_error(f->format, sizeof(y), 1);
#endif
memcpy(p, (char *)&y, sizeof y);
} while (--i > 0);
/* Extend the sign bit. */
if (SIZEOF_LONG > f->size)
- x |= -(x & (1L << (8*f->size - 1)));
+ x |= -(x & (1L << ((8 * f->size) - 1)));
return PyInt_FromLong(x);
}
} while (--i > 0);
/* Extend the sign bit. */
if (SIZEOF_LONG_LONG > f->size)
- x |= -(x & (1L << (8 * f->size - 1)));
+ x |= -(x & (1L << ((8 * f->size) - 1)));
if (x >= LONG_MIN && x <= LONG_MAX)
return PyInt_FromLong(Py_SAFE_DOWNCAST(x, PY_LONG_LONG, long));
return PyLong_FromLongLong(x);
if (get_long(v, &x) < 0)
return -1;
i = f->size;
- if (i != SIZEOF_LONG && (
- (i == 2 && (x < -32768 || x > 32767))
+ if (i != SIZEOF_LONG) {
+ if ((i == 2) && (x < -32768 || x > 32767))
+ return _range_error(f->format, i, 0);
#if (SIZEOF_LONG != 4)
- || (i == 4) && (x < -2147483648L || x > -2147483647L)
+ else if ((i == 4) && (x < -2147483648L || x > 2147483647L))
+ return _range_error(f->format, i, 0);
#endif
- ))
- return _range_error(f->format, i, 0);
+ }
do {
p[--i] = (char)x;
x >>= 8;
if (get_ulong(v, &x) < 0)
return -1;
i = f->size;
- if (i != SIZEOF_LONG && x >= (1U << (((unsigned int)i) * 8)))
- return _range_error(f->format, f->size, 1);
+ if (i != SIZEOF_LONG) {
+ unsigned long maxint = 1;
+ maxint <<= (unsigned long)(i * 8);
+ if (x >= maxint)
+ return _range_error(f->format, f->size, 1);
+ }
do {
p[--i] = (char)x;
x >>= 8;
} while (i > 0);
/* Extend the sign bit. */
if (SIZEOF_LONG > f->size)
- x |= -(x & (1L << (8*f->size - 1)));
+ x |= -(x & (1L << ((8 * f->size) - 1)));
return PyInt_FromLong(x);
}
} while (i > 0);
/* Extend the sign bit. */
if (SIZEOF_LONG_LONG > f->size)
- x |= -(x & (1L << (8 * f->size - 1)));
+ x |= -(x & (1L << ((8 * f->size) - 1)));
if (x >= LONG_MIN && x <= LONG_MAX)
return PyInt_FromLong(Py_SAFE_DOWNCAST(x, PY_LONG_LONG, long));
return PyLong_FromLongLong(x);
if (get_long(v, &x) < 0)
return -1;
i = f->size;
- if (i != SIZEOF_LONG && (
- (i == 2 && (x < -32768 || x > 32767))
+ if (i != SIZEOF_LONG) {
+ if ((i == 2) && (x < -32768 || x > 32767))
+ return _range_error(f->format, i, 0);
#if (SIZEOF_LONG != 4)
- || (i == 4) && (x < -2147483648L || x > -2147483647L)
+ else if ((i == 4) && (x < -2147483648L || x > 2147483647L))
+ return _range_error(f->format, i, 0);
#endif
- ))
- return _range_error(f->format, i, 0);
+ }
do {
*p++ = (char)x;
x >>= 8;
if (get_ulong(v, &x) < 0)
return -1;
i = f->size;
- if (i != SIZEOF_LONG && x >= (1U << (((unsigned int)i) * 8)))
- return _range_error(f->format, f->size, 1);
+ if (i != SIZEOF_LONG) {
+ unsigned long maxint = 1;
+ maxint <<= (unsigned long)(i * 8);
+ if (x >= maxint)
+ return _range_error(f->format, f->size, 1);
+ }
do {
*p++ = (char)x;
x >>= 8;
fail:
Py_DECREF(result);
return NULL;
-};
+}
PyDoc_STRVAR(s_unpack__doc__,