applied patch to fix xmlListAppend() from Georges-André SILBER also fix
* list.c: applied patch to fix xmlListAppend() from
Georges-André SILBER
* valid.c: also fix the place wher it was called.
Daniel
svn path=/trunk/; revision=3614
diff --git a/valid.c b/valid.c
index a239e68..b035f62 100644
--- a/valid.c
+++ b/valid.c
@@ -2998,19 +2998,32 @@
xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
"xmlAddRef: Reference list creation failed!\n",
NULL);
- return(NULL);
+ goto failed;
}
if (xmlHashAddEntry(table, value, ref_list) < 0) {
xmlListDelete(ref_list);
xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
"xmlAddRef: Reference list insertion failed!\n",
NULL);
- return(NULL);
+ goto failed;
}
}
-/* xmlListInsert(ref_list, ret); */
- xmlListAppend(ref_list, ret);
+ if (xmlListAppend(ref_list, ret) != 0) {
+ xmlErrValid(NULL, XML_ERR_INTERNAL_ERROR,
+ "xmlAddRef: Reference list insertion failed!\n",
+ NULL);
+ goto failed;
+ }
return(ret);
+failed:
+ if (ret != NULL) {
+ if (ret->value != NULL)
+ xmlFree((char *)ret->value);
+ if (ret->name != NULL)
+ xmlFree((char *)ret->name);
+ xmlFree(ret);
+ }
+ return(NULL);
}
/**