Tidied xml parsing

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@7480 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
richard 2000-09-12 10:34:49 +00:00
parent 605b1c2dd0
commit 1bfa5baeb9
2 changed files with 15 additions and 13 deletions

View file

@ -21,7 +21,7 @@ extern int xmlGetWarningsDefaultValue;
*/ */
static Class NSString_class; static Class NSString_class;
static IMP csImp; static IMP csImp;
static SEL csSel = @selector(stringWithCString: ); static SEL csSel = @selector(stringWithCString:);
static BOOL cacheDone = NO; static BOOL cacheDone = NO;
@ -103,7 +103,7 @@ setupCache()
- (GSXMLNode*) root - (GSXMLNode*) root
{ {
return [GSXMLNode nodeFrom: xmlDocGetRootElement(lib)]; return [GSXMLNode nodeFrom: xmlDocGetRootElement(lib)];
} }
- (GSXMLNode*) setRoot: (GSXMLNode*)node - (GSXMLNode*) setRoot: (GSXMLNode*)node
@ -374,7 +374,7 @@ setupCache()
+ (GSXMLNode*) nodeFrom: (void*)data + (GSXMLNode*) nodeFrom: (void*)data
{ {
return AUTORELEASE([[self alloc] nodeFrom: data]); return AUTORELEASE([[self alloc] initFrom: data]);
} }
- (id) initFrom: (void*)data - (id) initFrom: (void*)data
@ -786,14 +786,13 @@ setupCache()
} }
if ([src isKindOfClass: [NSData class]]) if ([src isKindOfClass: [NSData class]])
{ {
NSLog(@"parse data length %d", [src length]); lib = (void*)xmlCreateMemoryParserCtxt((void*)[src bytes],
NSLog(@"parse data %*s", [src length], [src bytes]); [src length]-1);
lib = (void*)xmlCreateMemoryParserCtxt((void*)[src bytes], [src length]); if (lib == NULL)
if (lib == NULL) {
{ NSLog(@"out of memory");
NSLog(@"out of memory"); return NO;
return NO; }
}
} }
else if ([src isKindOfClass: [NSString class]]) else if ([src isKindOfClass: [NSString class]])
{ {

View file

@ -768,9 +768,12 @@ static id parsePl(pldata* pld)
{ {
NSData *data; NSData *data;
GSXMLParser *parser; GSXMLParser *parser;
char *buf = NSZoneMalloc(NSDefaultMallocZone(), pld->end+1);
data = [NSData dataWithBytes: pld->ptr length: pld->end]; memcpy(buf, pld->ptr, pld->end);
NSLog(@"Parsing '%*s'", pld->end, pld->ptr); buf[pld->end] = '\0';
data = [NSData dataWithBytesNoCopy: buf length: pld->end+1];
NSLog(@"Parsing '%s'", buf);
parser = [GSXMLParser parser: data]; parser = [GSXMLParser parser: data];
if ([parser parse] == YES) if ([parser parse] == YES)
{ {