mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-25 01:31:08 +00:00
XML node ownership fix
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@8564 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
c32e845f44
commit
9804becce4
2 changed files with 26 additions and 8 deletions
|
@ -1,3 +1,8 @@
|
|||
2001-01-12 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* Source/GSXML.m: ([-GSXMLDocument setRoot:]) set root node to be
|
||||
owned by libxml, so we don't free it's memory ourselves.
|
||||
|
||||
2001-01-10 Nicola Pero <n.pero@mi.flashnet.it>
|
||||
|
||||
* Source/GSAttributedString.m ([GSAttributedString -length]),
|
||||
|
|
|
@ -91,8 +91,16 @@ setupCache()
|
|||
static xmlParserInputPtr
|
||||
loadEntityFunction(const char *url, const char *eid, xmlParserCtxtPtr *ctxt);
|
||||
|
||||
|
||||
/* Internal interfaces */
|
||||
|
||||
@interface GSXMLNamespace (GSPrivate)
|
||||
- (void) _native: (BOOL)value;
|
||||
@end
|
||||
|
||||
@interface GSXMLNode (GSPrivate)
|
||||
- (void) _native: (BOOL)value;
|
||||
@end
|
||||
|
||||
@interface GSXMLParser (Private)
|
||||
- (BOOL) _initLibXML;
|
||||
- (void) _parseChunk: (NSData*)data;
|
||||
|
@ -176,6 +184,8 @@ loadEntityFunction(const char *url, const char *eid, xmlParserCtxtPtr *ctxt);
|
|||
{
|
||||
void *nodeLib = [node lib];
|
||||
void *oldRoot = xmlDocSetRootElement(lib, nodeLib);
|
||||
|
||||
[node _native: NO];
|
||||
return oldRoot == NULL ? nil : [GSXMLNode nodeFrom: nodeLib];
|
||||
}
|
||||
|
||||
|
@ -378,13 +388,9 @@ loadEntityFunction(const char *url, const char *eid, xmlParserCtxtPtr *ctxt);
|
|||
|
||||
@end
|
||||
|
||||
/* Internal interface for GSXMLNamespace */
|
||||
@interface GSXMLNamespace (internal)
|
||||
- (void) native: (BOOL)value;
|
||||
@end
|
||||
|
||||
@implementation GSXMLNamespace (Internal)
|
||||
- (void) native: (BOOL)value
|
||||
@implementation GSXMLNamespace (GSPrivate)
|
||||
- (void) _native: (BOOL)value
|
||||
{
|
||||
native = value;
|
||||
}
|
||||
|
@ -451,7 +457,7 @@ static NSMapTable *nodeNames = 0;
|
|||
{
|
||||
if (ns != nil)
|
||||
{
|
||||
[ns native: NO];
|
||||
[ns _native: NO];
|
||||
lib = xmlNewNode((xmlNsPtr)[ns lib], [name cString]);
|
||||
}
|
||||
else
|
||||
|
@ -718,6 +724,13 @@ static NSMapTable *nodeNames = 0;
|
|||
|
||||
@end
|
||||
|
||||
@implementation GSXMLNode (GSPrivate)
|
||||
- (void) _native: (BOOL)value
|
||||
{
|
||||
native = value;
|
||||
}
|
||||
@end
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue