diff --git a/Source/NSXMLDocument.m b/Source/NSXMLDocument.m index c4035f8c8..d921b882d 100644 --- a/Source/NSXMLDocument.m +++ b/Source/NSXMLDocument.m @@ -351,7 +351,7 @@ GS_PRIVATE_INTERNAL(NSXMLDocument) if (buf != 0 && length > 0) { - string = UTF8StrLen(buf, length); + string = StringFromXMLString(buf, length); free(buf); } return string; diff --git a/Source/NSXMLPrivate.h b/Source/NSXMLPrivate.h index f7aec287c..b431a428e 100644 --- a/Source/NSXMLPrivate.h +++ b/Source/NSXMLPrivate.h @@ -39,9 +39,20 @@ */ #define XMLSTRING(X) ((const unsigned char*)[X UTF8String]) +inline static NSString* +StringFromXMLString(const unsigned char *bytes, unsigned length) +{ + NSString *str; + + str = [[NSString alloc] initWithBytes: bytes + length: length + encoding: NSUTF8StringEncoding]; + return AUTORELEASE(str); +} #define MY_DOC ((xmlDoc *)internal->node) + /* Instance variables for NSXMLNode. This macro needs to be defined before * the NSXMLNode.h header is imported and before GSInternal.h is imported. *