Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
9e8f3163
Commit
9e8f3163
authored
Apr 21, 2017
by
Paul Sokolovsky
Browse files
extmod/moductypes: Fix bigint handling for 32-bit ports.
parent
3e5cd35a
Changes
4
Hide whitespace changes
Inline
Side-by-side
extmod/moductypes.c
View file @
9e8f3163
...
...
@@ -360,7 +360,7 @@ STATIC void set_aligned(uint val_type, void *p, mp_int_t index, mp_obj_t val) {
return
;
}
#endif
mp_int_t
v
=
mp_obj_get_int
(
val
);
mp_int_t
v
=
mp_obj_get_int
_truncated
(
val
);
switch
(
val_type
)
{
case
UINT8
:
((
uint8_t
*
)
p
)[
index
]
=
(
uint8_t
)
v
;
return
;
...
...
py/objint_mpz.c
View file @
9e8f3163
...
...
@@ -116,6 +116,7 @@ mp_obj_t mp_obj_int_from_bytes_impl(bool big_endian, size_t len, const byte *buf
void
mp_obj_int_to_bytes_impl
(
mp_obj_t
self_in
,
bool
big_endian
,
size_t
len
,
byte
*
buf
)
{
assert
(
MP_OBJ_IS_TYPE
(
self_in
,
&
mp_type_int
));
mp_obj_int_t
*
self
=
MP_OBJ_TO_PTR
(
self_in
);
memset
(
buf
,
0
,
len
);
mpz_as_bytes
(
&
self
->
mpz
,
big_endian
,
len
,
buf
);
}
...
...
tests/extmod/uctypes_32bit_intbig.py
0 → 100644
View file @
9e8f3163
# This test checks previously known problem values for 32-bit ports.
# It's less useful for 64-bit ports.
try
:
import
uctypes
except
ImportError
:
import
sys
print
(
"SKIP"
)
sys
.
exit
()
buf
=
b
"12345678abcd"
struct
=
uctypes
.
struct
(
uctypes
.
addressof
(
buf
),
{
"f32"
:
uctypes
.
UINT32
|
0
,
"f64"
:
uctypes
.
UINT64
|
4
},
uctypes
.
LITTLE_ENDIAN
)
struct
.
f32
=
0x7fffffff
print
(
buf
)
struct
.
f32
=
0x80000000
print
(
buf
)
struct
.
f32
=
0xff010203
print
(
buf
)
struct
.
f64
=
0x80000000
print
(
buf
)
struct
.
f64
=
0x80000000
*
2
print
(
buf
)
print
(
"="
)
buf
=
b
"12345678abcd"
struct
=
uctypes
.
struct
(
uctypes
.
addressof
(
buf
),
{
"f32"
:
uctypes
.
UINT32
|
0
,
"f64"
:
uctypes
.
UINT64
|
4
},
uctypes
.
BIG_ENDIAN
)
struct
.
f32
=
0x7fffffff
print
(
buf
)
struct
.
f32
=
0x80000000
print
(
buf
)
struct
.
f32
=
0xff010203
print
(
buf
)
struct
.
f64
=
0x80000000
print
(
buf
)
struct
.
f64
=
0x80000000
*
2
print
(
buf
)
tests/extmod/uctypes_32bit_intbig.py.exp
0 → 100644
View file @
9e8f3163
b'\xff\xff\xff\x7f5678abcd'
b'\x00\x00\x00\x805678abcd'
b'\x03\x02\x01\xff5678abcd'
b'\x03\x02\x01\xff\x00\x00\x00\x80\x00\x00\x00\x00'
b'\x03\x02\x01\xff\x00\x00\x00\x00\x01\x00\x00\x00'
=
b'\x7f\xff\xff\xff5678abcd'
b'\x80\x00\x00\x005678abcd'
b'\xff\x01\x02\x035678abcd'
b'\xff\x01\x02\x03\x00\x00\x00\x00\x80\x00\x00\x00'
b'\xff\x01\x02\x03\x00\x00\x00\x01\x00\x00\x00\x00'
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment