Fix crc32 duplication
This commit is contained in:
parent
6b5c7b6ce6
commit
23ad19fc5c
@ -32,6 +32,8 @@
|
|||||||
#include "py/binary.h"
|
#include "py/binary.h"
|
||||||
#include "py/objstr.h"
|
#include "py/objstr.h"
|
||||||
|
|
||||||
|
#include "lib/uzlib/tinf.h"
|
||||||
|
|
||||||
#if MICROPY_PY_UBINASCII
|
#if MICROPY_PY_UBINASCII
|
||||||
|
|
||||||
static void check_not_unicode(const mp_obj_t arg) {
|
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.
|
* 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
|
#if MICROPY_PY_UBINASCII_CRC32
|
||||||
STATIC mp_obj_t mod_binascii_crc32(size_t n_args, const mp_obj_t *args) {
|
STATIC mp_obj_t mod_binascii_crc32(size_t n_args, const mp_obj_t *args) {
|
||||||
mp_buffer_info_t bufinfo;
|
mp_buffer_info_t bufinfo;
|
||||||
|
Loading…
Reference in New Issue
Block a user