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 1e4a57e8a..acbc45827 100644 --- a/libbb/crc32.c +++ b/libbb/crc32.c | |||
@@ -16,14 +16,15 @@ | |||
16 | 16 | ||
17 | #include "libbb.h" | 17 | #include "libbb.h" |
18 | 18 | ||
19 | uint32_t *crc32_filltable(int endian) | 19 | uint32_t *crc32_filltable(uint32_t *crc_table, int endian) |
20 | { | 20 | { |
21 | |||
22 | uint32_t *crc_table = xmalloc(256 * sizeof(uint32_t)); | ||
23 | uint32_t polynomial = endian ? 0x04c11db7 : 0xedb88320; | 21 | uint32_t polynomial = endian ? 0x04c11db7 : 0xedb88320; |
24 | uint32_t c; | 22 | uint32_t c; |
25 | int i, j; | 23 | int i, j; |
26 | 24 | ||
25 | if (!crc_table) | ||
26 | crc_table = xmalloc(256 * sizeof(uint32_t)); | ||
27 | |||
27 | for (i = 0; i < 256; i++) { | 28 | for (i = 0; i < 256; i++) { |
28 | c = endian ? (i << 24) : i; | 29 | c = endian ? (i << 24) : i; |
29 | for (j = 8; j; j--) { | 30 | for (j = 8; j; j--) { |