Skip to content

Commit c428367

Browse files
committed
extmod/modubinascii: Make crc32() support configurable.
Disable by default, enable in unix port.
1 parent 39799f7 commit c428367

4 files changed

Lines changed: 16 additions & 0 deletions

File tree

extmod/modubinascii.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ mp_obj_t mod_binascii_b2a_base64(mp_obj_t data) {
204204
}
205205
MP_DEFINE_CONST_FUN_OBJ_1(mod_binascii_b2a_base64_obj, mod_binascii_b2a_base64);
206206

207+
#if MICROPY_PY_UBINASCII_CRC32
207208
mp_obj_t mod_binascii_crc32(size_t n_args, const mp_obj_t *args) {
208209
mp_buffer_info_t bufinfo;
209210
mp_get_buffer_raise(args[0], &bufinfo, MP_BUFFER_READ);
@@ -212,6 +213,7 @@ mp_obj_t mod_binascii_crc32(size_t n_args, const mp_obj_t *args) {
212213
return MP_OBJ_NEW_SMALL_INT(crc ^ 0xffffffff);
213214
}
214215
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_binascii_crc32_obj, 1, 2, mod_binascii_crc32);
216+
#endif
215217

216218
#if MICROPY_PY_UBINASCII
217219

@@ -221,7 +223,9 @@ STATIC const mp_rom_map_elem_t mp_module_binascii_globals_table[] = {
221223
{ MP_ROM_QSTR(MP_QSTR_unhexlify), MP_ROM_PTR(&mod_binascii_unhexlify_obj) },
222224
{ MP_ROM_QSTR(MP_QSTR_a2b_base64), MP_ROM_PTR(&mod_binascii_a2b_base64_obj) },
223225
{ MP_ROM_QSTR(MP_QSTR_b2a_base64), MP_ROM_PTR(&mod_binascii_b2a_base64_obj) },
226+
#if MICROPY_PY_UBINASCII_CRC32
224227
{ MP_ROM_QSTR(MP_QSTR_crc32), MP_ROM_PTR(&mod_binascii_crc32_obj) },
228+
#endif
225229
};
226230

227231
STATIC MP_DEFINE_CONST_DICT(mp_module_binascii_globals, mp_module_binascii_globals_table);

py/mpconfig.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -887,6 +887,11 @@ typedef double mp_float_t;
887887
#define MICROPY_PY_UBINASCII (0)
888888
#endif
889889

890+
// Depends on MICROPY_PY_UZLIB
891+
#ifndef MICROPY_PY_UBINASCII_CRC32
892+
#define MICROPY_PY_UBINASCII_CRC32 (0)
893+
#endif
894+
890895
#ifndef MICROPY_PY_URANDOM
891896
#define MICROPY_PY_URANDOM (0)
892897
#endif

tests/extmod/ubinascii_crc32.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
import ubinascii as binascii
33
except ImportError:
44
import binascii
5+
try:
6+
binascii.crc32
7+
except AttributeError:
8+
print("SKIP")
9+
import sys
10+
sys.exit()
511

612
print(hex(binascii.crc32(b'The quick brown fox jumps over the lazy dog')))
713
print(hex(binascii.crc32(b'\x00' * 32)))

unix/mpconfigport.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@
117117
#define MICROPY_PY_UHASHLIB_SHA1 (1)
118118
#endif
119119
#define MICROPY_PY_UBINASCII (1)
120+
#define MICROPY_PY_UBINASCII_CRC32 (1)
120121
#define MICROPY_PY_URANDOM (1)
121122
#ifndef MICROPY_PY_USELECT
122123
#define MICROPY_PY_USELECT (1)

0 commit comments

Comments
 (0)