3 hours of debug, this was hell:
- SAX.c parser.c xpath.c: generating IDs when not validating
from an external parsed entity was poisoning the ID has table
with removed values. This was killing XSLT on the KDE help
browser.
Daniel
diff --git a/parser.c b/parser.c
index 8483069..a784f71 100644
--- a/parser.c
+++ b/parser.c
@@ -4217,13 +4217,16 @@
ctxt->entity = ctxt->input;
NEXT;
if (RAW == '?') {
- ret->ocur = XML_ELEMENT_CONTENT_OPT;
+ if (ret != NULL)
+ ret->ocur = XML_ELEMENT_CONTENT_OPT;
NEXT;
} else if (RAW == '*') {
- ret->ocur = XML_ELEMENT_CONTENT_MULT;
+ if (ret != NULL)
+ ret->ocur = XML_ELEMENT_CONTENT_MULT;
NEXT;
} else if (RAW == '+') {
- ret->ocur = XML_ELEMENT_CONTENT_PLUS;
+ if (ret != NULL)
+ ret->ocur = XML_ELEMENT_CONTENT_PLUS;
NEXT;
}
return(ret);
@@ -8880,6 +8883,7 @@
xmlParserCtxtPtr ctxt;
xmlDocPtr newDoc;
xmlSAXHandlerPtr oldsax = NULL;
+ int oldexternal = ctxt->external;
int ret = 0;
if (depth > 40) {
@@ -8950,6 +8954,7 @@
*/
ctxt->instate = XML_PARSER_CONTENT;
ctxt->validate = 0;
+ ctxt->external = 2;
ctxt->loadsubset = 0;
ctxt->depth = depth;