diff options
| author | Scott Shawcroft <scott@tannewt.org> | 2019-01-21 00:31:45 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-01-21 00:31:45 -0800 |
| commit | b369fa9013d3d0be48bef113811c4acddcd53ba5 (patch) | |
| tree | 00ebdb0656a8101363a7a1e16c44201045542b84 /py/binary.c | |
| parent | 6b88d0f94eb1459562d0f159688b504a6f5d408f (diff) | |
| parent | 9558b3afa7d90e1f84070088b0f7c4c21def4683 (diff) | |
Merge pull request #1478 from dhalbert/struct-compat
Improve struct compatibility with CPython
Diffstat (limited to 'py/binary.c')
| -rw-r--r-- | py/binary.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/py/binary.c b/py/binary.c index ca851c936..9c3a49e8f 100644 --- a/py/binary.c +++ b/py/binary.c @@ -49,7 +49,7 @@ size_t mp_binary_get_size(char struct_type, char val_type, mp_uint_t *palign) { switch (struct_type) { case '<': case '>': switch (val_type) { - case 'b': case 'B': + case 'b': case 'B': case 'x': size = 1; break; case 'h': case 'H': size = 2; break; @@ -79,7 +79,7 @@ size_t mp_binary_get_size(char struct_type, char val_type, mp_uint_t *palign) { // particular (or any) ABI. switch (val_type) { case BYTEARRAY_TYPECODE: - case 'b': case 'B': + case 'b': case 'B': case 'x': align = size = 1; break; case 'h': case 'H': align = alignof(short); @@ -126,6 +126,7 @@ mp_obj_t mp_binary_get_val_array(char typecode, void *p, mp_uint_t index) { break; case BYTEARRAY_TYPECODE: case 'B': + case 'x': // value will be discarded val = ((unsigned char*)p)[index]; break; case 'h': @@ -364,6 +365,8 @@ void mp_binary_set_val_array_from_int(char typecode, void *p, mp_uint_t index, m case 'B': ((unsigned char*)p)[index] = val; break; + case 'x': + ((unsigned char*)p)[index] = 0; case 'h': ((short*)p)[index] = val; break; |
