diff --git a/ChangeLog b/ChangeLog index fffcb7d13..915b17aa4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-10-13 Richard Frith-Macdonald + + * Source/Additions/GSXML.m: Fix bug escaping XML special chartacters. + 2004-10-11 Richard Frith-Macdonald * Tools/defaults.m: fix for domains and default names contaning diff --git a/Source/Additions/GSXML.m b/Source/Additions/GSXML.m index 0f7ea0ccb..4fc1deffb 100644 --- a/Source/Additions/GSXML.m +++ b/Source/Additions/GSXML.m @@ -4034,9 +4034,10 @@ static BOOL warned = NO; if (warned == NO) { warned = YES; NSLog(@"WARNING, use - (NSString*) stringByEscapingXML { unsigned length = [self length]; - unsigned output = length; + unsigned output = 0; unichar *from; unsigned i = 0; + BOOL escape = NO; from = NSZoneMalloc (NSDefaultMallocZone(), sizeof(unichar) * length); [self getCharacters: from]; @@ -4052,15 +4053,18 @@ static BOOL warned = NO; if (warned == NO) { warned = YES; NSLog(@"WARNING, use case '"': case '\'': output += 6; + escape = YES; break; case '&': output += 5; + escape = YES; break; case '<': case '>': output += 4; + escape = YES; break; default: @@ -4075,13 +4079,15 @@ static BOOL warned = NO; if (warned == NO) { warned = YES; NSLog(@"WARNING, use output++; c /= 10; } + escape = YES; } + output++; break; } } } - if (output > length) + if (escape == YES) { unichar *to; unsigned j = 0; diff --git a/Tools/autogsdoc.m b/Tools/autogsdoc.m index ebcd763e4..9f7a8aede 100644 --- a/Tools/autogsdoc.m +++ b/Tools/autogsdoc.m @@ -1976,6 +1976,7 @@ main(int argc, char **argv, char **env) { if (hDate == nil || [gDate earlierDate: hDate] == hDate) { + NSData *d; GSXMLNode *root; GSXMLParser *parser; AGSIndex *localRefs; @@ -2016,7 +2017,8 @@ main(int argc, char **argv, char **env) [html setLocalRefs: localRefs]; [html setInstanceVariablesAtEnd: instanceVarsAtEnd]; generated = [html outputDocument: root]; - if ([generated writeToFile: htmlfile atomically: YES] == NO) + d = [generated dataUsingEncoding: NSUTF8StringEncoding]; + if ([d writeToFile: htmlfile atomically: YES] == NO) { NSLog(@"Sorry unable to write %@", htmlfile); }