View Single Post
Old 10-14-2003, 04:37 PM   #1 (permalink)
cheerios
Banned
 
Location: 'bout 2 feet from my iMac
long shot, but... any Obj-C coders use CoreFoundation and can help me out?

ok, well... I'm TRYING to use the CoreFoundation XML parser under OS X. right now I'm hitting a problem where it SIGBUS's when I call any inherited functions... code below. any hints, lemme know!

Code:
#import "xml.h"


@implementation xml
+(void)parseXML: (NSString *)path
{
    NSLog(@"I am here!");
    CFXMLTreeRef    cfXMLTree;
    CFDataRef       xmlData;
    CFURLRef pathURL = CFURLCreateFromFileSystemRepresentation (
                    kCFAllocatorDefault,
                    [path cString],
                    [path cStringLength],
                    NO);


    // Load the XML data using its URL.
    NSLog(@"about to load the XML file");
    CFURLCreateDataAndPropertiesFromResource(kCFAllocatorDefault, 
                pathURL, &xmlData, NULL, NULL, NULL);

// Parse the XML and get the CFXMLTree.
    NSLog(@"loaded XML, about to parse it!");
    cfXMLTree = CFXMLTreeCreateFromData(kCFAllocatorDefault,
                    xmlData, 
                    pathURL, 
                    kCFXMLParserSkipWhitespace,
                    kCFXMLNodeCurrentVersion);
    NSLog(@"finished parsing");
    
    //int childCount = CFTreeGetChildCount(cfXMLTree); THIS CRASHES IT.
    NSLog(@"childcount");
    int index;
    CFXMLTreeRef    xmlTreeNode;
    CFXMLNodeRef    xmlNode;

    NSLog(@"about to for-loop");
    for (index = 0; index < 2; index++) 
    {
        NSLog(@"just about to call CFTree");
        xmlTreeNode = CFTreeGetChildAtIndex(cfXMLTree, index); //SO DOES THIS.
        NSLog(@"called CFTree, calling CFXML");
        xmlNode = CFXMLTreeGetNode(xmlTreeNode);
        CFShow(CFXMLNodeGetString(xmlNode));
        //NSLog("%s\n",CFXMLNodeGetString(xmlNode));
    }
}

@end
current output: 2003-10-14 17:28:24.790 experiment[13414] I am here!
2003-10-14 17:28:24.799 experiment[13414] about to load the XML file
2003-10-14 17:28:24.807 experiment[13414] loaded XML, about to parse it!
2003-10-14 17:28:24.816 experiment[13414] finished parsing
2003-10-14 17:28:24.824 experiment[13414] childcount
2003-10-14 17:28:24.832 experiment[13414] about to for-loop
2003-10-14 17:28:24.840 experiment[13414] just about to call CFTree

experiment has exited due to signal 10 (SIGBUS).


note that it dies when it calls the CFTree function with a CFXMLTree object (XMLTree is a subclass of Tree, btw). I'm baffled...
cheerios is offline  
 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76