Unsigned 1 and 2 byte sized formats shouldn't result in long integer values!
diff --git a/Modules/structmodule.c b/Modules/structmodule.c
index d837e02..af8f1e5 100644
--- a/Modules/structmodule.c
+++ b/Modules/structmodule.c
@@ -694,7 +694,10 @@
do {
x = (x<<8) | (*p++ & 0xFF);
} while (--i > 0);
- return PyLong_FromUnsignedLong(x);
+ if (f->size >= 4)
+ return PyLong_FromUnsignedLong(x);
+ else
+ return PyInt_FromLong((long)x);
}
static PyObject *
@@ -825,7 +828,10 @@
do {
x = (x<<8) | (p[--i] & 0xFF);
} while (i > 0);
- return PyLong_FromUnsignedLong(x);
+ if (f->size >= 4)
+ return PyLong_FromUnsignedLong(x);
+ else
+ return PyInt_FromLong((long)x);
}
static PyObject *