Thomas asked: > Everything is working as expected. > >rows = (CFMutableArrayRef) CFDictionaryGetValue(query, >resultsArrayNameRef); > > >When I add another CFArray to my dictionary with a different CFString key >@"selectcols", my code compiles, but the application quits unexpectedly. >I can not tell what is causing this to fail; Is there a way to debug this? Thomas, If you drop this convention of predefining your keys: dim as CFStringRef resultsArrayNameRef : resultsArrayNameRef = @"results" .... fn CFDictionaryAddValue( queryDictionaryRef, resultsArrayNameRef, resultsArrayRef ) and use the key pointer directly as a CFString: fn CFDictionaryAddValue( queryDictionaryRef, @"results", resultsArrayRef ) your code works. Here's a little demo to try both ways and see the difference. Ken include "ConsoleWindow" local fn ConsoleCFPrint( typeRef as CFTypeRef ) '~'1 dim as CFStringRef oldText, newText oldText = fn HIViewCopyText( sConsoleHITextView ) newText = fn CFStringCreateWithFormat( _kCFAllocatorDefault, #0, @"%@%@\r", oldText, typeRef ) CFRelease( oldText ) fn HIViewSetText( sConsoleHITextView, newText ) CFRelease( newText ) end fn dim as CFMutableDictionaryRef queryDictionaryRef : queryDictionaryRef = 0 dim as CFTypeRef resultsDictionaryValue, selectcolsDictionaryValue dim as CFindex i, elementsInArray // dim as CFStringRef resultsArrayNameRef : resultsArrayNameRef = @"results" // dim as CFStringRef selectcolsArrayNameRef : selectcolsArrayNameRef = @"selectcols" dim as CFStringRef result dim as CFMutableArrayRef resultsArrayRef : resultsArrayRef = 0 dim as CFMutableArrayRef selectcolsArrayRef : selectcolsArrayRef = 0 queryDictionaryRef = fn CFDictionaryCreateMutable( _kCFAllocatorDefault, 0, @kCFCopyStringDictionaryKeyCallBacks, @kCFTypeDictionaryValueCallBacks ) /* Setup the Dictionary with an empty results array */ resultsArrayRef = fn CFArrayCreateMutable( _kCFAllocatorDefault, 0, @kCFTypeArrayCallBacks ) selectcolsArrayRef = fn CFArrayCreateMutable( _kCFAllocatorDefault, 0, @kCFTypeArrayCallBacks ) CFArrayAppendValue( resultsArrayRef, @"Results 0" ) CFArrayAppendValue( resultsArrayRef, @"Results 1" ) CFArrayAppendValue( resultsArrayRef, @"Results 2" ) fn ConsoleCFPrint( @"Elements in resultsArrayRef:" ) elementsInArray = fn CFArrayGetCount( resultsArrayRef ) for i = 0 to elementsInArray -1 result = fn CFArrayGetValueAtIndex( resultsArrayRef, i ) fn ConsoleCFPrint( result ) next CFArrayAppendValue( selectcolsArrayRef, @"Column 0" ) CFArrayAppendValue( selectcolsArrayRef, @"Column 1" ) CFArrayAppendValue( selectcolsArrayRef, @"Column 2" ) fn ConsoleCFPrint( @"\rElements in selectcolsArrayRef:" ) elementsInArray = fn CFArrayGetCount( selectcolsArrayRef ) for i = 0 to elementsInArray -1 result = fn CFArrayGetValueAtIndex( selectcolsArrayRef, i ) fn ConsoleCFPrint( result ) next fn CFDictionaryAddValue( queryDictionaryRef, @"results", resultsArrayRef ) fn CFDictionaryAddValue( queryDictionaryRef, @"selectcols", selectcolsArrayRef ) resultsDictionaryValue = fn CFDictionaryGetValue( queryDictionaryRef, @"results" ) selectcolsDictionaryValue = fn CFDictionaryGetValue( queryDictionaryRef, @"selectcols" ) elementsInArray = fn CFArrayGetCount( ( CFArrayRef )resultsDictionaryValue ) fn ConsoleCFPrint( @"\r\rResults from resultsArrayRef stored in dictionary:" ) for i = 0 to elementsInArray - 1 result = fn CFArrayGetValueAtIndex( ( CFArrayRef )resultsDictionaryValue, i ) fn ConsoleCFPrint( result ) next elementsInArray = fn CFArrayGetCount( ( CFArrayRef )selectcolsDictionaryValue ) fn ConsoleCFPrint( @"\rResults from selectcolsArrayRef stored in dictionary" ) for i = 0 to elementsInArray - 1 result = fn CFArrayGetValueAtIndex( ( CFArrayRef )selectcolsDictionaryValue, i ) fn ConsoleCFPrint( result ) next