Index: src/OFDictionary.m ================================================================== --- src/OFDictionary.m +++ src/OFDictionary.m @@ -39,11 +39,16 @@ @try { data = [self allocNItems: size withSize: sizeof(OFList*)]; } @catch (OFException *e) { - [super free]; + /* + * We can't use [super free] on OS X here. Compiler bug? + * Anyway, set size to 0 so that [self free] works. + */ + size = 0; + [self free]; @throw e; } memset(data, 0, size); return self; @@ -65,11 +70,16 @@ @try { data = [self allocNItems: size withSize: sizeof(OFList*)]; } @catch (OFException *e) { - [super free]; + /* + * We can't use [super free] on OS X here. Compiler bug? + * Anyway, set size to 0 so that [self free] works. + */ + size = 0; + [self free]; @throw e; } memset(data, 0, size); return self; Index: src/OFString.m ================================================================== --- src/OFString.m +++ src/OFString.m @@ -166,11 +166,16 @@ } @try { string = [self allocWithSize: length + 1]; } @catch (OFException *e) { - [super free]; + /* + * We can't use [super free] on OS X here. Compiler bug? + * [self free] will do here as we don't reimplement + * free. + */ + [self free]; @throw e; } memcpy(string, str, length + 1); }