@@ -108,12 +108,11 @@ _distanceBits = distanceBits; _dictionaryBits = dictionaryBits; _slidingWindowMask = (1u << dictionaryBits) - 1; - _slidingWindow = [self allocMemoryWithSize: - _slidingWindowMask + 1]; + _slidingWindow = of_malloc(_slidingWindowMask + 1, 1); memset(_slidingWindow, ' ', _slidingWindowMask + 1); } @catch (id e) { [self release]; @throw e; } @@ -123,17 +122,21 @@ - (void)dealloc { if (_stream != nil) [self close]; + + free(_slidingWindow); if (_codeLenTree != NULL) of_huffman_tree_release(_codeLenTree); if (_litLenTree != NULL) of_huffman_tree_release(_litLenTree); if (_distTree != NULL) of_huffman_tree_release(_distTree); + + free(_codesLengths); [super dealloc]; } - (size_t)lowlevelReadIntoBuffer: (void *)buffer_ @@ -172,11 +175,11 @@ goto start; } _codesCount = bits; _codesReceived = 0; - _codesLengths = [self allocZeroedMemoryWithSize: bits]; + _codesLengths = of_calloc(bits, 1); _skip = true; _state = STATE_CODE_LEN_TREE; goto start; case STATE_CODE_LEN_TREE: @@ -223,11 +226,12 @@ _codesReceived++; } _codeLenTree = of_huffman_tree_construct(_codesLengths, _codesCount); - [self freeMemory: _codesLengths]; + free(_codesLengths); + _codesLengths = NULL; _state = STATE_LITLEN_CODES_COUNT; goto start; case STATE_CODE_LEN_TREE_SINGLE: if OF_UNLIKELY (!tryReadBits(self, &bits, 5)) @@ -252,11 +256,11 @@ goto start; } _codesCount = bits; _codesReceived = 0; - _codesLengths = [self allocZeroedMemoryWithSize: bits]; + _codesLengths = of_calloc(bits, 1); _skip = false; _treeIter = _codeLenTree; _state = STATE_LITLEN_TREE; goto start; @@ -312,11 +316,12 @@ _codesLengths[_codesReceived++] = value - 2; } _litLenTree = of_huffman_tree_construct(_codesLengths, _codesCount); - [self freeMemory: _codesLengths]; + free(_codesLengths); + _codesLengths = NULL; of_huffman_tree_release(_codeLenTree); _codeLenTree = NULL; _state = STATE_DIST_CODES_COUNT; @@ -341,11 +346,11 @@ goto start; } _codesCount = bits; _codesReceived = 0; - _codesLengths = [self allocZeroedMemoryWithSize: bits]; + _codesLengths = of_calloc(bits, 1); _treeIter = _codeLenTree; _state = STATE_DIST_TREE; goto start; case STATE_DIST_TREE: @@ -376,11 +381,12 @@ _codesReceived++; } _distTree = of_huffman_tree_construct(_codesLengths, _codesCount); - [self freeMemory: _codesLengths]; + free(_codesLengths); + _codesLengths = NULL; _treeIter = _litLenTree; _state = STATE_BLOCK_LITLEN; goto start; case STATE_DIST_TREE_SINGLE: