xinclude: Report malloc failures in xmlXIncludeIncludeNode
diff --git a/xinclude.c b/xinclude.c
index 9f2faa4..d0ca15e 100644
--- a/xinclude.c
+++ b/xinclude.c
@@ -1960,7 +1960,11 @@
 	    end = list;
 	    list = list->next;
 
-	    xmlAddPrevSibling(cur, end);
+	    if (xmlAddPrevSibling(cur, end) == NULL) {
+                xmlUnlinkNode(end);
+                xmlFreeNode(end);
+                goto err_memory;
+            }
 	}
         /*
          * FIXME: xmlUnlinkNode doesn't coalesce text nodes.
@@ -1984,13 +1988,13 @@
             xmlFreeNode(child);
         }
 	end = xmlNewDocNode(cur->doc, cur->ns, cur->name, NULL);
-	if (end == NULL) {
-	    xmlXIncludeErrMemory(ctxt);
-            xmlFreeNodeList(list);
-	    return(-1);
-	}
+	if (end == NULL)
+            goto err_memory;
 	end->type = XML_XINCLUDE_END;
-	xmlAddNextSibling(cur, end);
+	if (xmlAddNextSibling(cur, end) == NULL) {
+            xmlFreeNode(end);
+            goto err_memory;
+        }
 
 	/*
 	 * Add the list of nodes
@@ -1999,12 +2003,21 @@
 	    cur = list;
 	    list = list->next;
 
-	    xmlAddPrevSibling(end, cur);
+	    if (xmlAddPrevSibling(end, cur) == NULL) {
+                xmlUnlinkNode(cur);
+                xmlFreeNode(cur);
+                goto err_memory;
+            }
 	}
     }
 
 
     return(0);
+
+err_memory:
+    xmlXIncludeErrMemory(ctxt);
+    xmlFreeNodeList(list);
+    return(-1);
 }
 
 /**