trying to fix #56948, this led to an XPath fix, improvements of SAX
* SAX.c parser.c testXPath.c xpath.c: trying to fix #56948, this
led to an XPath fix, improvements of SAX initialization, and
an added option --nocdata to testXPath
Daniel
diff --git a/SAX.c b/SAX.c
index 5b41072..87b25b1 100644
--- a/SAX.c
+++ b/SAX.c
@@ -1593,6 +1593,10 @@
void
xmlDefaultSAXHandlerInit(void)
{
+ static int xmlSAXInitialized = 0;
+ if (xmlSAXInitialized)
+ return;
+
xmlDefaultSAXHandler.internalSubset = internalSubset;
xmlDefaultSAXHandler.externalSubset = externalSubset;
xmlDefaultSAXHandler.isStandalone = isStandalone;
@@ -1623,6 +1627,8 @@
xmlDefaultSAXHandler.warning = xmlParserWarning;
xmlDefaultSAXHandler.error = xmlParserError;
xmlDefaultSAXHandler.fatalError = xmlParserError;
+
+ xmlSAXInitialized = 1;
}
#ifdef LIBXML_HTML_ENABLED
@@ -1667,6 +1673,10 @@
void
htmlDefaultSAXHandlerInit(void)
{
+ static int htmlSAXInitialized = 0;
+ if (htmlSAXInitialized)
+ return;
+
htmlDefaultSAXHandler.internalSubset = internalSubset;
htmlDefaultSAXHandler.externalSubset = NULL;
htmlDefaultSAXHandler.isStandalone = NULL;
@@ -1694,6 +1704,8 @@
htmlDefaultSAXHandler.warning = xmlParserWarning;
htmlDefaultSAXHandler.error = xmlParserError;
htmlDefaultSAXHandler.fatalError = xmlParserError;
+
+ htmlSAXInitialized = 1;
}
#endif /* LIBXML_HTML_ENABLED */
@@ -1739,6 +1751,10 @@
void
docbDefaultSAXHandlerInit(void)
{
+ static int docbSAXInitialized = 0;
+ if (docbSAXInitialized)
+ return;
+
docbDefaultSAXHandler.internalSubset = internalSubset;
docbDefaultSAXHandler.externalSubset = NULL;
docbDefaultSAXHandler.isStandalone = isStandalone;
@@ -1766,6 +1782,8 @@
docbDefaultSAXHandler.warning = xmlParserWarning;
docbDefaultSAXHandler.error = xmlParserError;
docbDefaultSAXHandler.fatalError = xmlParserError;
+
+ docbSAXInitialized = 1;
}
#endif /* LIBXML_DOCB_ENABLED */