summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--py/binary.c2
-rw-r--r--tests/extmod/uctypes_array_load_store.py4
-rw-r--r--tests/extmod/uctypes_array_load_store.py.exp48
3 files changed, 27 insertions, 27 deletions
diff --git a/py/binary.c b/py/binary.c
index d0f72ec23c..1847894b71 100644
--- a/py/binary.c
+++ b/py/binary.c
@@ -343,7 +343,7 @@ void mp_binary_set_val(char struct_type, char val_type, mp_obj_t val_in, byte *p
val = mp_obj_get_int(val_in);
// zero/sign extend if needed
if (BYTES_PER_WORD < 8 && size > sizeof(val)) {
- int c = (is_signed(val_type) && (mp_int_t)val < 0) ? 0xff : 0x00;
+ int c = (mp_int_t)val < 0 ? 0xff : 0x00;
memset(p, c, size);
if (struct_type == '>') {
p += size - sizeof(val);
diff --git a/tests/extmod/uctypes_array_load_store.py b/tests/extmod/uctypes_array_load_store.py
index 709b9f5c29..3b9bb6d730 100644
--- a/tests/extmod/uctypes_array_load_store.py
+++ b/tests/extmod/uctypes_array_load_store.py
@@ -6,7 +6,7 @@ except ImportError:
print("SKIP")
raise SystemExit
-N = 3
+N = 5
for endian in ("NATIVE", "LITTLE_ENDIAN", "BIG_ENDIAN"):
for type_ in ("INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64"):
@@ -15,5 +15,5 @@ for endian in ("NATIVE", "LITTLE_ENDIAN", "BIG_ENDIAN"):
data = bytearray(sz)
s = uctypes.struct(uctypes.addressof(data), desc, getattr(uctypes, endian))
for i in range(N):
- s.arr[i] = i
+ s.arr[i] = i - 2
print(endian, type_, sz, *(s.arr[i] for i in range(N)))
diff --git a/tests/extmod/uctypes_array_load_store.py.exp b/tests/extmod/uctypes_array_load_store.py.exp
index f6f7bc96ef..10de804645 100644
--- a/tests/extmod/uctypes_array_load_store.py.exp
+++ b/tests/extmod/uctypes_array_load_store.py.exp
@@ -1,24 +1,24 @@
-NATIVE INT8 3 0 1 2
-NATIVE UINT8 3 0 1 2
-NATIVE INT16 6 0 1 2
-NATIVE UINT16 6 0 1 2
-NATIVE INT32 12 0 1 2
-NATIVE UINT32 12 0 1 2
-NATIVE INT64 24 0 1 2
-NATIVE UINT64 24 0 1 2
-LITTLE_ENDIAN INT8 3 0 1 2
-LITTLE_ENDIAN UINT8 3 0 1 2
-LITTLE_ENDIAN INT16 6 0 1 2
-LITTLE_ENDIAN UINT16 6 0 1 2
-LITTLE_ENDIAN INT32 12 0 1 2
-LITTLE_ENDIAN UINT32 12 0 1 2
-LITTLE_ENDIAN INT64 24 0 1 2
-LITTLE_ENDIAN UINT64 24 0 1 2
-BIG_ENDIAN INT8 3 0 1 2
-BIG_ENDIAN UINT8 3 0 1 2
-BIG_ENDIAN INT16 6 0 1 2
-BIG_ENDIAN UINT16 6 0 1 2
-BIG_ENDIAN INT32 12 0 1 2
-BIG_ENDIAN UINT32 12 0 1 2
-BIG_ENDIAN INT64 24 0 1 2
-BIG_ENDIAN UINT64 24 0 1 2
+NATIVE INT8 5 -2 -1 0 1 2
+NATIVE UINT8 5 254 255 0 1 2
+NATIVE INT16 10 -2 -1 0 1 2
+NATIVE UINT16 10 65534 65535 0 1 2
+NATIVE INT32 20 -2 -1 0 1 2
+NATIVE UINT32 20 4294967294 4294967295 0 1 2
+NATIVE INT64 40 -2 -1 0 1 2
+NATIVE UINT64 40 18446744073709551614 18446744073709551615 0 1 2
+LITTLE_ENDIAN INT8 5 -2 -1 0 1 2
+LITTLE_ENDIAN UINT8 5 254 255 0 1 2
+LITTLE_ENDIAN INT16 10 -2 -1 0 1 2
+LITTLE_ENDIAN UINT16 10 65534 65535 0 1 2
+LITTLE_ENDIAN INT32 20 -2 -1 0 1 2
+LITTLE_ENDIAN UINT32 20 4294967294 4294967295 0 1 2
+LITTLE_ENDIAN INT64 40 -2 -1 0 1 2
+LITTLE_ENDIAN UINT64 40 18446744073709551614 18446744073709551615 0 1 2
+BIG_ENDIAN INT8 5 -2 -1 0 1 2
+BIG_ENDIAN UINT8 5 254 255 0 1 2
+BIG_ENDIAN INT16 10 -2 -1 0 1 2
+BIG_ENDIAN UINT16 10 65534 65535 0 1 2
+BIG_ENDIAN INT32 20 -2 -1 0 1 2
+BIG_ENDIAN UINT32 20 4294967294 4294967295 0 1 2
+BIG_ENDIAN INT64 40 -2 -1 0 1 2
+BIG_ENDIAN UINT64 40 18446744073709551614 18446744073709551615 0 1 2