bzip: make ftab[] and crc32table[] member arrays of EState, do not allocate
No binary (build failed)
—
(log yok)
| @@ -99,9 +99,8 @@ void BZ2_bzCompressInit(bz_stream *strm, int blockSize100k) | |
| s->ptr = (uint32_t*)s->arr1; | |
| s->arr2 = xmalloc((n + BZ_N_OVERSHOOT) * sizeof(uint32_t)); | |
| s->block = (uint8_t*)s->arr2; | |
| - | s->ftab = xmalloc(65537 * sizeof(uint32_t)); |
| - | s->crc32table = crc32_filltable(NULL, 1); |
| + | crc32_filltable(s->crc32table, 1); |
| s->state = BZ_S_INPUT; | |
| s->mode = BZ_M_RUNNING; | |
| @@ -369,8 +368,8 @@ void BZ2_bzCompressEnd(bz_stream *strm) | |
| s = strm->state; | |
| free(s->arr1); | |
| free(s->arr2); | |
| - | free(s->ftab); |
| - | free(s->crc32table); |
| + | //free(s->ftab); // made it array member of s |
| + | //free(s->crc32table); // ditto |
| free(s); | |
| } | |
| @@ -134,7 +134,7 @@ typedef struct EState { | |
| /* for doing the block sorting */ | |
| uint32_t *arr1; | |
| uint32_t *arr2; | |
| - | uint32_t *ftab; |
| + | //uint32_t *ftab; //moved into this struct, see below |
| uint16_t *quadrant; | |
| int32_t budget; | |
| @@ -160,9 +160,6 @@ typedef struct EState { | |
| uint32_t bsBuff; | |
| int32_t bsLive; | |
| - | /* guess what */ |
| - | uint32_t *crc32table; |
| - | |
| /* block and combined CRCs */ | |
| uint32_t blockCRC; | |
| uint32_t combinedCRC; | |
| @@ -185,6 +182,12 @@ typedef struct EState { | |
| uint8_t len[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; | |
| + | /* guess what */ |
| + | uint32_t crc32table[256]; |
| + | |
| + | /* for doing the block sorting */ |
| + | uint32_t ftab[65537]; |
| + | |
| /* stack-saving measures: these can be local, but they are too big */ | |
| int32_t sendMTFValues__code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; | |
| int32_t sendMTFValues__rfreq[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; | |