mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-25 01:31:08 +00:00
added XMLStringCopy to properly copy NSStrings as xml strings; use it for setting name
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/branches/nsxml_using_libxml2@34505 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
065ac2bce2
commit
8772885b71
3 changed files with 27 additions and 3 deletions
|
@ -68,7 +68,10 @@ GS_PRIVATE_INTERNAL(NSXMLElement)
|
|||
/* Create holder for internal instance variables so that we'll have
|
||||
* all our ivars available rather than just those of the superclass.
|
||||
*/
|
||||
NSString *name = @"";
|
||||
GS_CREATE_INTERNAL(NSXMLElement)
|
||||
internal->node = (void *)xmlNewNode(NULL,(xmlChar *)[name UTF8String]);
|
||||
internal->objectValue = @"";
|
||||
}
|
||||
return [super initWithKind: kind options: theOptions];
|
||||
}
|
||||
|
|
|
@ -416,7 +416,12 @@ GS_PRIVATE_INTERNAL(NSXMLNode)
|
|||
|
||||
- (NSString*) name
|
||||
{
|
||||
return internal->name;
|
||||
xmlNodePtr node = (xmlNodePtr)(internal->node);
|
||||
if (node->name)
|
||||
return StringFromXMLString(node->name,strlen((char *)node->name));
|
||||
else
|
||||
return @"";
|
||||
//return internal->name;
|
||||
}
|
||||
|
||||
- (NSXMLNode*) _nodeFollowingInNaturalDirection: (BOOL)forward
|
||||
|
@ -525,7 +530,10 @@ GS_PRIVATE_INTERNAL(NSXMLNode)
|
|||
- (NSString*) stringValue
|
||||
{
|
||||
xmlNodePtr node = (xmlNodePtr)(internal->node);
|
||||
if (node->content)
|
||||
return StringFromXMLString(node->content,strlen((char *)node->content));
|
||||
else
|
||||
return @"";
|
||||
}
|
||||
|
||||
- (NSString*) URI
|
||||
|
@ -566,7 +574,9 @@ GS_PRIVATE_INTERNAL(NSXMLNode)
|
|||
{
|
||||
if (NSXMLInvalidKind != internal->kind)
|
||||
{
|
||||
ASSIGNCOPY(internal->name, name);
|
||||
xmlNodePtr node = (xmlNodePtr)(internal->node);
|
||||
node->name = XMLStringCopy(name);
|
||||
//ASSIGNCOPY(internal->name, name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -39,11 +39,22 @@
|
|||
*/
|
||||
#define XMLSTRING(X) ((const unsigned char*)[X UTF8String])
|
||||
|
||||
inline static unsigned char *XMLStringCopy(NSString *source)
|
||||
{
|
||||
unsigned int len = [source maximumLengthOfBytesUsingEncoding:NSUTF8StringEncoding] + 1;
|
||||
unsigned char *xmlstr = malloc(len);
|
||||
[source getCString:xmlstr maxLength:len encoding:NSUTF8StringEncoding];
|
||||
return xmlstr;
|
||||
}
|
||||
|
||||
inline static NSString*
|
||||
StringFromXMLString(const unsigned char *bytes, unsigned length)
|
||||
{
|
||||
NSString *str;
|
||||
|
||||
if (bytes == NULL)
|
||||
return @"";
|
||||
|
||||
str = [[NSString alloc] initWithBytes: bytes
|
||||
length: length
|
||||
encoding: NSUTF8StringEncoding];
|
||||
|
|
Loading…
Reference in a new issue