From 1063f1d833754cd35e0180e129a0ae61028677d8 Mon Sep 17 00:00:00 2001 From: antirez Date: Tue, 5 May 2020 10:09:28 +0200 Subject: [PATCH] Fix CRC64 initialization outside the Redis server itself. --- src/crc64.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/crc64.c b/src/crc64.c index 4cbc019f6..9c555e98b 100644 --- a/src/crc64.c +++ b/src/crc64.c @@ -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); }