Skip to content

performOnDataInArchive needs too much RAM #100

Description

@polaronde

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions