| 1505 | } Hash; |
| 1506 | |
| 1507 | static unsigned hash_init(Hash* hash, unsigned windowsize) { |
| 1508 | unsigned i; |
| 1509 | hash->head = (int*)lodepng_malloc(sizeof(int) * HASH_NUM_VALUES); |
| 1510 | hash->val = (int*)lodepng_malloc(sizeof(int) * windowsize); |
| 1511 | hash->chain = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize); |
| 1512 | |
| 1513 | hash->zeros = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize); |
| 1514 | hash->headz = (int*)lodepng_malloc(sizeof(int) * (MAX_SUPPORTED_DEFLATE_LENGTH + 1)); |
| 1515 | hash->chainz = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize); |
| 1516 | |
| 1517 | if(!hash->head || !hash->chain || !hash->val || !hash->headz|| !hash->chainz || !hash->zeros) { |
| 1518 | return 83; /*alloc fail*/ |
| 1519 | } |
| 1520 | |
| 1521 | /*initialize hash table*/ |
| 1522 | for(i = 0; i != HASH_NUM_VALUES; ++i) hash->head[i] = -1; |
| 1523 | for(i = 0; i != windowsize; ++i) hash->val[i] = -1; |
| 1524 | for(i = 0; i != windowsize; ++i) hash->chain[i] = i; /*same value as index indicates uninitialized*/ |
| 1525 | |
| 1526 | for(i = 0; i <= MAX_SUPPORTED_DEFLATE_LENGTH; ++i) hash->headz[i] = -1; |
| 1527 | for(i = 0; i != windowsize; ++i) hash->chainz[i] = i; /*same value as index indicates uninitialized*/ |
| 1528 | |
| 1529 | return 0; |
| 1530 | } |
| 1531 | |
| 1532 | static void hash_cleanup(Hash* hash) { |
| 1533 | lodepng_free(hash->head); |
no test coverage detected