diff options
Diffstat (limited to 'libbb/crc32.c')
-rw-r--r-- | libbb/crc32.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libbb/crc32.c b/libbb/crc32.c index 1e4a57e..acbc458 100644 --- a/libbb/crc32.c +++ b/libbb/crc32.c @@ -16,14 +16,15 @@ #include "libbb.h" -uint32_t *crc32_filltable(int endian) +uint32_t *crc32_filltable(uint32_t *crc_table, int endian) { - - uint32_t *crc_table = xmalloc(256 * sizeof(uint32_t)); uint32_t polynomial = endian ? 0x04c11db7 : 0xedb88320; uint32_t c; int i, j; + if (!crc_table) + crc_table = xmalloc(256 * sizeof(uint32_t)); + for (i = 0; i < 256; i++) { c = endian ? (i << 24) : i; for (j = 8; j; j--) { |