UnrarKit icon indicating copy to clipboard operation
UnrarKit copied to clipboard

performOnDataInArchive needs too much RAM

Open polaronde opened this issue 4 years ago • 0 comments

Within the while loop in performOnDataInArchive, a buffer is allocated with malloc and used for an NSData object:

NSData *data = [NSData dataWithBytesNoCopy:buffer length:(NSUInteger)info.uncompressedSize freeWhenDone:YES];

The intention is that the memory is freed when the NSData object is released. But this happens only later, outside of the while loop. So when processing a large RAR archive, this while loop eats up the RAM.

Suggestion: Use realloc instead of malloc, do not give the NSData object ownership of the memory, and call free(buffer) when the loop is done.

polaronde avatar Sep 22 '21 15:09 polaronde