mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-25 09:41:15 +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
|
/* Create holder for internal instance variables so that we'll have
|
||||||
* all our ivars available rather than just those of the superclass.
|
* all our ivars available rather than just those of the superclass.
|
||||||
*/
|
*/
|
||||||
|
NSString *name = @"";
|
||||||
GS_CREATE_INTERNAL(NSXMLElement)
|
GS_CREATE_INTERNAL(NSXMLElement)
|
||||||
|
internal->node = (void *)xmlNewNode(NULL,(xmlChar *)[name UTF8String]);
|
||||||
|
internal->objectValue = @"";
|
||||||
}
|
}
|
||||||
return [super initWithKind: kind options: theOptions];
|
return [super initWithKind: kind options: theOptions];
|
||||||
}
|
}
|
||||||
|
|
|
@ -416,7 +416,12 @@ GS_PRIVATE_INTERNAL(NSXMLNode)
|
||||||
|
|
||||||
- (NSString*) name
|
- (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
|
- (NSXMLNode*) _nodeFollowingInNaturalDirection: (BOOL)forward
|
||||||
|
@ -525,7 +530,10 @@ GS_PRIVATE_INTERNAL(NSXMLNode)
|
||||||
- (NSString*) stringValue
|
- (NSString*) stringValue
|
||||||
{
|
{
|
||||||
xmlNodePtr node = (xmlNodePtr)(internal->node);
|
xmlNodePtr node = (xmlNodePtr)(internal->node);
|
||||||
return StringFromXMLString(node->content,strlen((char *)node->content));
|
if (node->content)
|
||||||
|
return StringFromXMLString(node->content,strlen((char *)node->content));
|
||||||
|
else
|
||||||
|
return @"";
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString*) URI
|
- (NSString*) URI
|
||||||
|
@ -566,7 +574,9 @@ GS_PRIVATE_INTERNAL(NSXMLNode)
|
||||||
{
|
{
|
||||||
if (NSXMLInvalidKind != internal->kind)
|
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])
|
#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*
|
inline static NSString*
|
||||||
StringFromXMLString(const unsigned char *bytes, unsigned length)
|
StringFromXMLString(const unsigned char *bytes, unsigned length)
|
||||||
{
|
{
|
||||||
NSString *str;
|
NSString *str;
|
||||||
|
|
||||||
|
if (bytes == NULL)
|
||||||
|
return @"";
|
||||||
|
|
||||||
str = [[NSString alloc] initWithBytes: bytes
|
str = [[NSString alloc] initWithBytes: bytes
|
||||||
length: length
|
length: length
|
||||||
encoding: NSUTF8StringEncoding];
|
encoding: NSUTF8StringEncoding];
|
||||||
|
|
Loading…
Reference in a new issue