Author: rfm
Date: Mon Nov  2 19:10:38 2015
New Revision: 39122

URL: http://svn.gna.org/viewcvs/gnustep?rev=39122&view=rev
Log:
osx compatibility fixup

Modified:
    libs/base/trunk/ChangeLog
    libs/base/trunk/Source/NSXMLElement.m
    libs/base/trunk/Source/NSXMLNode.m

Modified: libs/base/trunk/ChangeLog
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/ChangeLog?rev=39122&r1=39121&r2=39122&view=diff
==============================================================================
--- libs/base/trunk/ChangeLog   (original)
+++ libs/base/trunk/ChangeLog   Mon Nov  2 19:10:38 2015
@@ -1,3 +1,9 @@
+2015-11-02  Richard Frith-Macdonald <[email protected]>
+
+       * Source/NSXMLElement.m: (insertChild:atIndex:) if the child already
+       has a parent, detach from that before adding to the new parent.
+       OSX compatibility fix.
+
 2015-11-01  Richard Frith-Macdonald <[email protected]>
 
        * Source/NSXMLDocument.m: When libxml2 is not enabled, create a

Modified: libs/base/trunk/Source/NSXMLElement.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Source/NSXMLElement.m?rev=39122&r1=39121&r2=39122&view=diff
==============================================================================
--- libs/base/trunk/Source/NSXMLElement.m       (original)
+++ libs/base/trunk/Source/NSXMLElement.m       Mon Nov  2 19:10:38 2015
@@ -648,7 +648,6 @@
   // Check to make sure this is a valid addition...
   NSAssert(nil != child, NSInvalidArgumentException);
   NSAssert(index <= childCount, NSInvalidArgumentException);
-  NSAssert(nil == [child parent], NSInvalidArgumentException);
   NSAssert(NSXMLAttributeKind != theKind, NSInvalidArgumentException);
   NSAssert(NSXMLDTDKind != theKind, NSInvalidArgumentException);
   NSAssert(NSXMLDocumentKind != theKind, NSInvalidArgumentException);
@@ -657,6 +656,11 @@
   NSAssert(NSXMLInvalidKind != theKind, NSInvalidArgumentException);
   NSAssert(NSXMLNamespaceKind != theKind, NSInvalidArgumentException);
   NSAssert(NSXMLNotationDeclarationKind != theKind, 
NSInvalidArgumentException);
+
+  if (nil != [child parent])
+    {
+      [child detach];
+    }
 
   [self _insertChild: child atIndex: index];
 }

Modified: libs/base/trunk/Source/NSXMLNode.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Source/NSXMLNode.m?rev=39122&r1=39121&r2=39122&view=diff
==============================================================================
--- libs/base/trunk/Source/NSXMLNode.m  (original)
+++ libs/base/trunk/Source/NSXMLNode.m  Mon Nov  2 19:10:38 2015
@@ -245,7 +245,29 @@
       xmlFree(contentA);
       xmlFree(contentB);
     }
-  // FIXME: Handle more node types
+  if (1) 
+    {
+      xmlChar *contentA = NULL;
+      xmlChar *contentB = NULL;
+
+      // FIXME: Handle more node types
+      if (!isEqualAttributes(nodeA, nodeB))
+       {
+         return NO;
+       }
+
+      // Get the value of any text node underneath the current element.
+      contentA = xmlNodeGetContent((const xmlNodePtr)nodeA);
+      contentB = xmlNodeGetContent((const xmlNodePtr)nodeB);
+      if (xmlStrcmp(contentA, contentB) != 0)
+       {
+          xmlFree(contentA);
+          xmlFree(contentB);
+         return NO;
+       }
+      xmlFree(contentA);
+      xmlFree(contentB);
+    }
   
   return YES;
 }
@@ -541,8 +563,9 @@
 
               if (ns->href == NULL)
                 {
-                  xmlNsPtr ns1 = xmlSearchNs(parentNode->doc, parentNode, 
ns->prefix);
-
+                  xmlNsPtr ns1;
+
+                  ns1 = xmlSearchNs(parentNode->doc, parentNode, ns->prefix);
                   if (ns1 != NULL)
                     {
                       cleanup_namespaces(childNode, ns1);
@@ -552,8 +575,10 @@
               /*
               else if (ns->prefix == NULL)
                 {
-                  xmlNsPtr ns1 = xmlSearchNsByHref(parentNode->doc, 
parentNode, ns->href);
-
+                  xmlNsPtr ns1;
+
+                  ns1
+                    = xmlSearchNsByHref(parentNode->doc, parentNode, ns->href);
                   if (ns1 != NULL)
                     {
                       cleanup_namespaces(childNode, ns1);
@@ -609,9 +634,9 @@
         }
     }
 
-  if (mergeTextNodes ||
-           ((childNode->type != XML_TEXT_NODE) &&
-            (parentNode->type != XML_TEXT_NODE)))
+  if (mergeTextNodes
+    || ((childNode->type != XML_TEXT_NODE)
+      && (parentNode->type != XML_TEXT_NODE)))
     {
       // this uses the built-in libxml functions which merge adjacent text 
nodes
       xmlNodePtr addedNode = NULL;


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to