From 23ad19fc5c2820045d8ceaec403fbb01c2a63131 Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Fri, 22 Sep 2023 13:38:17 -0500 Subject: [PATCH] Fix crc32 duplication --- extmod/modubinascii.c | 31 ++----------------------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/extmod/modubinascii.c b/extmod/modubinascii.c index ef96b04b7e..9c5db03a3d 100644 --- a/extmod/modubinascii.c +++ b/extmod/modubinascii.c @@ -32,6 +32,8 @@ #include "py/binary.h" #include "py/objstr.h" +#include "lib/uzlib/tinf.h" + #if MICROPY_PY_UBINASCII static void check_not_unicode(const mp_obj_t arg) { @@ -217,35 +219,6 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(mod_binascii_b2a_base64_obj, 1, mod_binascii_b * any source distribution. */ -/* - * CRC32 algorithm taken from the zlib source, which is - * Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler - */ - - -static const unsigned int tinf_crc32tab[16] = { - 0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, - 0x6b6b51f4, 0x4db26158, 0x5005713c, 0xedb88320, 0xf00f9344, - 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, - 0xbdbdf21c -}; - -/* crc is previous value for incremental computation, 0xffffffff initially */ -static uint32_t from_uzlib_crc32(const void *data, unsigned int length, uint32_t crc) { - const unsigned char *buf = (const unsigned char *)data; - unsigned int i; - - for (i = 0; i < length; ++i) - { - crc ^= buf[i]; - crc = tinf_crc32tab[crc & 0x0f] ^ (crc >> 4); - crc = tinf_crc32tab[crc & 0x0f] ^ (crc >> 4); - } - - // return value suitable for passing in next time, for final value invert it - return crc /* ^ 0xffffffff*/; -} - #if MICROPY_PY_UBINASCII_CRC32 STATIC mp_obj_t mod_binascii_crc32(size_t n_args, const mp_obj_t *args) { mp_buffer_info_t bufinfo;