aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/xml/pgxml_dom.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/contrib/xml/pgxml_dom.c b/contrib/xml/pgxml_dom.c
index 0c22aced065..f79183824eb 100644
--- a/contrib/xml/pgxml_dom.c
+++ b/contrib/xml/pgxml_dom.c
@@ -87,10 +87,10 @@ pgxml_parse(PG_FUNCTION_ARGS)
doctree = xmlParseMemory((char *) VARDATA(t), docsize);
if (doctree == NULL)
{
- /* xmlCleanupParser(); */
+ xmlCleanupParser();
PG_RETURN_BOOL(false); /* i.e. not well-formed */
}
- /* xmlCleanupParser(); */
+ xmlCleanupParser();
xmlFreeDoc(doctree);
PG_RETURN_BOOL(true);
}
@@ -202,7 +202,8 @@ pgxml_xpath(PG_FUNCTION_ARGS)
doctree = xmlParseMemory((char *) VARDATA(t), docsize);
if (doctree == NULL)
- { /* not well-formed */
+ { /* not well-formed */
+ xmlCleanupParser();
PG_RETURN_NULL();
}
@@ -216,6 +217,7 @@ pgxml_xpath(PG_FUNCTION_ARGS)
elog(WARNING, "XPath syntax error");
xmlFreeDoc(doctree);
pfree((void *) xpath);
+ xmlCleanupParser();
PG_RETURN_NULL();
}
@@ -227,6 +229,7 @@ pgxml_xpath(PG_FUNCTION_ARGS)
{
xmlFreeDoc(doctree);
pfree((void *) xpath);
+ xmlCleanupParser();
PG_RETURN_NULL(); /* seems appropriate */
}
/* now we dump this node, ?surrounding by tags? */
@@ -257,6 +260,6 @@ pgxml_xpath(PG_FUNCTION_ARGS)
xmlFreeDoc(doctree);
pfree((void *) xpath);
xmlFree(xpresstr);
-
+ xmlCleanupParser();
PG_RETURN_TEXT_P(xpres);
}