@@ -90,10 +90,18 @@ @throw e; } return self; } + +- (void)dealloc +{ + free(_readBufferMemory); + free(_writeBuffer); + + [super dealloc]; +} - (bool)lowlevelIsAtEndOfStream { OF_UNRECOGNIZED_SELECTOR } @@ -141,12 +149,11 @@ length: MIN_READ_SIZE]; if (bytesRead > length) { memcpy(buffer, tmp, length); - readBuffer = [self allocMemoryWithSize: - bytesRead - length]; + readBuffer = of_malloc(bytesRead - length, 1); memcpy(readBuffer, tmp + length, bytesRead - length); _readBuffer = _readBufferMemory = readBuffer; _readBufferLength = bytesRead - length; @@ -164,11 +171,11 @@ if (length >= _readBufferLength) { size_t ret = _readBufferLength; memcpy(buffer, _readBuffer, _readBufferLength); - [self freeMemory: _readBufferMemory]; + free(_readBufferMemory); _readBuffer = _readBufferMemory = NULL; _readBufferLength = 0; return ret; } else { @@ -752,11 +759,11 @@ ret = [OFString stringWithCString: _readBuffer encoding: encoding length: retLength]; - [self freeMemory: _readBufferMemory]; + free(_readBufferMemory); _readBuffer = _readBufferMemory = NULL; _readBufferLength = 0; _waitingForDelimiter = false; return ret; @@ -791,23 +798,21 @@ if (bufferLength > 0) { /* * Append data to _readBuffer * to prevent loss of data. */ - readBuffer = [self - allocMemoryWithSize: + readBuffer = of_malloc( _readBufferLength + - bufferLength]; + bufferLength, 1); memcpy(readBuffer, _readBuffer, _readBufferLength); memcpy(readBuffer + _readBufferLength, buffer, bufferLength); - [self freeMemory: - _readBufferMemory]; + free(_readBufferMemory); _readBuffer = readBuffer; _readBufferMemory = readBuffer; _readBufferLength += bufferLength; } @@ -815,17 +820,16 @@ @throw e; } @finally { free(retCString); } - readBuffer = [self - allocMemoryWithSize: bufferLength - i - 1]; + readBuffer = of_malloc(bufferLength - i - 1, 1); if (readBuffer != NULL) memcpy(readBuffer, buffer + i + 1, bufferLength - i - 1); - [self freeMemory: _readBufferMemory]; + free(_readBufferMemory); _readBuffer = _readBufferMemory = readBuffer; _readBufferLength = bufferLength - i - 1; _waitingForDelimiter = false; return ret; @@ -832,18 +836,18 @@ } } /* There was no newline or \0 */ if (bufferLength > 0) { - readBuffer = [self allocMemoryWithSize: - _readBufferLength + bufferLength]; + readBuffer = of_malloc(_readBufferLength + bufferLength, + 1); memcpy(readBuffer, _readBuffer, _readBufferLength); memcpy(readBuffer + _readBufferLength, buffer, bufferLength); - [self freeMemory: _readBufferMemory]; + free(_readBufferMemory); _readBuffer = _readBufferMemory = readBuffer; _readBufferLength += bufferLength; } } @finally { free(buffer); @@ -986,11 +990,11 @@ ret = [OFString stringWithCString: _readBuffer encoding: encoding length: _readBufferLength]; - [self freeMemory: _readBufferMemory]; + free(_readBufferMemory); _readBuffer = _readBufferMemory = NULL; _readBufferLength = 0; _waitingForDelimiter = false; return ret; @@ -1035,23 +1039,21 @@ if (bufferLength > 0) { /* * Append data to _readBuffer * to prevent loss of data. */ - readBuffer = [self - allocMemoryWithSize: + readBuffer = of_malloc( _readBufferLength + - bufferLength]; + bufferLength, 1); memcpy(readBuffer, _readBuffer, _readBufferLength); memcpy(readBuffer + _readBufferLength, buffer, bufferLength); - [self freeMemory: - _readBufferMemory]; + free(_readBufferMemory); _readBuffer = readBuffer; _readBufferMemory = readBuffer; _readBufferLength += bufferLength; } @@ -1059,17 +1061,16 @@ @throw e; } @finally { free(retCString); } - readBuffer = [self allocMemoryWithSize: - bufferLength - i - 1]; + readBuffer = of_malloc(bufferLength - i - 1, 1); if (readBuffer != NULL) memcpy(readBuffer, buffer + i + 1, bufferLength - i - 1); - [self freeMemory: _readBufferMemory]; + free(_readBufferMemory); _readBuffer = _readBufferMemory = readBuffer; _readBufferLength = bufferLength - i - 1; _waitingForDelimiter = false; return ret; @@ -1076,18 +1077,18 @@ } } /* Neither the delimiter nor \0 was found */ if (bufferLength > 0) { - readBuffer = [self allocMemoryWithSize: - _readBufferLength + bufferLength]; + readBuffer = of_malloc(_readBufferLength + bufferLength, + 1); memcpy(readBuffer, _readBuffer, _readBufferLength); memcpy(readBuffer + _readBufferLength, buffer, bufferLength); - [self freeMemory: _readBufferMemory]; + free(_readBufferMemory); _readBuffer = _readBufferMemory = readBuffer; _readBufferLength += bufferLength; } } @finally { free(buffer); @@ -1129,11 +1130,11 @@ return; [self lowlevelWriteBuffer: _writeBuffer length: _writeBufferLength]; - [self freeMemory: _writeBuffer]; + free(_writeBuffer); _writeBuffer = NULL; _writeBufferLength = 0; } - (size_t)writeBuffer: (const void *)buffer @@ -1150,12 +1151,12 @@ bytesWritten: bytesWritten errNo: 0]; return bytesWritten; } else { - _writeBuffer = [self resizeMemory: _writeBuffer - size: _writeBufferLength + length]; + _writeBuffer = of_realloc(_writeBuffer, + _writeBufferLength + length, 1); memcpy(_writeBuffer + _writeBufferLength, buffer, length); _writeBufferLength += length; return length; } @@ -1871,28 +1872,28 @@ char *readBuffer; if (length > SIZE_MAX - _readBufferLength) @throw [OFOutOfRangeException exception]; - readBuffer = [self allocMemoryWithSize: _readBufferLength + length]; + readBuffer = of_malloc(_readBufferLength + length, 1); memcpy(readBuffer, buffer, length); memcpy(readBuffer + length, _readBuffer, _readBufferLength); - [self freeMemory: _readBufferMemory]; + free(_readBufferMemory); _readBuffer = _readBufferMemory = readBuffer; _readBufferLength += length; } - (void)close { - [self freeMemory: _readBufferMemory]; + free(_readBufferMemory); _readBuffer = _readBufferMemory = NULL; _readBufferLength = 0; - [self freeMemory: _writeBuffer]; + free(_writeBuffer); _writeBuffer = NULL; _writeBufferLength = 0; _buffersWrites = false; _waitingForDelimiter = false; } @end