I'm probably missing something that's obvious but not so much to me
right now...
I have an NSArray category method that takes an NSArray of NSString
objects, and returns a C array of C strings (char * const *). This is
so I can build a C array for some functions that require a C array.
But I'm running into a problem. With an NSArray containing two
NSStrings, "-c" and "/path/to/file", Guard Malloc is complaining that
there is a buffer overrun in my code. I know where it is, but what is
causing this buffer overrun and what can I do to fix it? Unfortunately
I can't switch to using GC at this time.
Here's my code:
- (char * const *)cArrayUsingEncoding:(NSStringEncoding)encoding
{
size_t length = ([self count]+1)*sizeof(char **);
char **returnArray = NSZoneMalloc([self zone], length);
NSUInteger i;
const NSUInteger count = [self count];
[NSMutableData dataWithBytesNoCopy:returnArray length:length]; // add
returnArray to the autorelease pool
for (i = 0 ; i < count ; i++)
{
NSString *string = [self objectAtIndex:i];
NSMutableData *data;
NSAssert([string isKindOfClass:[NSString class]], @"Array must be
100% composed of strings");
data = [[[string dataUsingEncoding:encoding] mutableCopy]
autorelease];
[data appendByte:'\0']; // null-terminate the string
returnArray[i] = [data mutableBytes]; <-- GUARD MALLOC CRASHES HERE;
i IS ZERO
}
returnArray[count] = NULL; // null-terminate the array
return returnArray;
}
Nick Zitzmann
<http://www.chronosnet.com/>
_______________________________________________
Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [EMAIL PROTECTED]