I'm getting this error
malloc: * * * error for object 0x8a591d4: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
No memory available to program now: unsafe to call malloc
No memory available to program now: unsafe to call malloc
It comes from this line
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Info"
ofType:@"plist"];
NSData *plistData = [NSData dataWithContentsOfFile:plistPath];
NSDictionary *loadedPlist =
[NSPropertyListSerialization propertyListFromData:plistData
mutabilityOption:0 format:NULL errorDescription:NULL]; <<< this line
The value of plistData is set to Summary Unavailable
I'm not sure where to start ?
EDIT - added more code
I'm going to add another answer: it's also possible that you have ALREADY hosed the heap, and you're failing on propertyListFromData: just because it does a lot of allocations and happens to hit the bad spot. So edit your scheme in Xcode, and make sure you have all of the Memory Management items checked (in the Diagnostics tab of the Run task).
Have you set a breakpoint in malloc_error_break? This at least gives you a backtrace and you might see something of note. If nothing else, you could try po plistData
from the GDB console.
BTW, while it may not help, I'd think dictionaryWithContentsOfFile:
would be simpler.
How is Info.plist being stored? Is it a standard plist/xml file? Would the following solve the problem you are trying to solve, and possibly prevent this issue from happening?
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Info"
ofType:@"plist"];
NSDictionary *loadedPlist = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
Or if you want an auto-released object...
NSDictionary *loadedPlist = [NSDictionary dictionaryWithContentsOfFile:plistPath];