Fix CRC64 initialization outside the Redis server itself.

This commit is contained in:
antirez 2020-05-05 10:09:28 +02:00
parent a6e55c096d
commit fc7bc32045

View File

@ -29,6 +29,7 @@
#include "crc64.h"
#include "crcspeed.h"
static uint64_t crc64_table[8][256] = {{0}};
static int crc64_table_initialized = 0;
#define POLY UINT64_C(0xad93d23594c935a9)
/******************** BEGIN GENERATED PYCRC FUNCTIONS ********************/
@ -115,10 +116,12 @@ uint64_t _crc64(uint_fast64_t crc, const void *in_data, const uint64_t len) {
/* Initializes the 16KB lookup tables. */
void crc64_init(void) {
crcspeed64native_init(_crc64, crc64_table);
crc64_table_initialized = 1;
}
/* Compute crc64 */
uint64_t crc64(uint64_t crc, const unsigned char *s, uint64_t l) {
if (!crc64_table_initialized) crc64_init();
return crcspeed64native(crc64_table, crc, (void *) s, l);
}