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);