try to fix xmlParseInNodeContext when operating on an HTML document.
* HTMLparser.c libxml.h parser.c: try to fix xmlParseInNodeContext
when operating on an HTML document.
Daniel
diff --git a/ChangeLog b/ChangeLog
index 94ce642..bd2753b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Jan 18 18:21:15 CET 2006 Daniel Veillard <daniel@veillard.com>
+
+ * HTMLparser.c libxml.h parser.c: try to fix xmlParseInNodeContext
+ when operating on an HTML document.
+
Mon Jan 9 17:27:15 CET 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
* relaxng.c include/libxml/relaxng.h: Added
diff --git a/HTMLparser.c b/HTMLparser.c
index 12afdd8..5cbc904 100644
--- a/HTMLparser.c
+++ b/HTMLparser.c
@@ -3753,10 +3753,8 @@
/**
* htmlParseContent:
* @ctxt: an HTML parser context
- * @name: the node name
*
* Parse a content: comment, sub-element, reference or text.
- *
*/
static void
@@ -3875,6 +3873,19 @@
}
/**
+ * htmlParseContent:
+ * @ctxt: an HTML parser context
+ *
+ * Parse a content: comment, sub-element, reference or text.
+ */
+
+void
+__htmlParseContent(void *ctxt) {
+ if (ctxt != NULL)
+ htmlParseContent((htmlParserCtxtPtr) ctxt);
+}
+
+/**
* htmlParseElement:
* @ctxt: an HTML parser context
*
diff --git a/libxml.h b/libxml.h
index 89ec595..56e0320 100644
--- a/libxml.h
+++ b/libxml.h
@@ -49,6 +49,14 @@
*/
void __xmlIOErr(int domain, int code, const char *extra);
void __xmlLoaderErr(void *ctx, const char *msg, const char *filename);
+#ifdef LIBXML_HTML_ENABLED
+/*
+ * internal function of HTML parser needed for xmlParseInNodeContext
+ * but not part of the API
+ */
+void __htmlParseContent(void *ctx);
+#endif
+
#ifdef IN_LIBXML
#ifdef __GNUC__
diff --git a/parser.c b/parser.c
index 8c2fed3..4c996dd 100644
--- a/parser.c
+++ b/parser.c
@@ -11709,7 +11709,13 @@
ctxt->loadsubset |= XML_SKIP_IDS;
}
- xmlParseContent(ctxt);
+#ifdef LIBXML_HTML_ENABLED
+ if (doc->type == XML_HTML_DOCUMENT_NODE)
+ __htmlParseContent(ctxt);
+ else
+#endif
+ xmlParseContent(ctxt);
+
nsPop(ctxt, nsnr);
if ((RAW == '<') && (NXT(1) == '/')) {
xmlFatalErr(ctxt, XML_ERR_NOT_WELL_BALANCED, NULL);