summaryrefslogtreecommitdiff
path: root/libbb/crc32.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbb/crc32.c')
-rw-r--r--libbb/crc32.c7
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--) {