- HTMLtree.c: fixed the bug reported by Bjorn in htmlNodeDump
Daniel
diff --git a/HTMLtree.c b/HTMLtree.c
index 28226ea..626a821 100644
--- a/HTMLtree.c
+++ b/HTMLtree.c
@@ -493,16 +493,6 @@
 	}
 	return;
     }
-    if (cur->type == HTML_PRESERVE_NODE) {
-	if (cur->content != NULL) {
-#ifndef XML_USE_BUFFER_CONTENT
-	    xmlBufferWriteCHAR(buf, cur->content);
-#else
-	    xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
-#endif
-	}
-	return;
-    }
     if (cur->type == HTML_COMMENT_NODE) {
 	if (cur->content != NULL) {
 	    xmlBufferWriteChar(buf, "<!--");
@@ -537,9 +527,19 @@
         xmlBufferWriteChar(buf, ";");
 	return;
     }
+    if (cur->type == HTML_PRESERVE_NODE) {
+	if (cur->content != NULL) {
+#ifndef XML_USE_BUFFER_CONTENT
+	    xmlBufferWriteCHAR(buf, cur->content);
+#else
+	    xmlBufferWriteCHAR(buf, xmlBufferContent(cur->content));
+#endif
+	}
+	return;
+    }
 
     /*
-     * Get specific HTmL info for taht node.
+     * Get specific HTML info for taht node.
      */
     info = htmlTagLookup(cur->name);
 
@@ -558,9 +558,10 @@
 	return;
     }
     if ((cur->content == NULL) && (cur->children == NULL)) {
-        if ((info != NULL) && (info->endTag != 0))
+        if ((info != NULL) && (info->saveEndTag != 0) &&
+	    (strcmp(info->name, "html")) && (strcmp(info->name, "body"))) {
 	    xmlBufferWriteChar(buf, ">");
-	else {
+	} else {
 	    xmlBufferWriteChar(buf, "></");
 	    xmlBufferWriteCHAR(buf, cur->name);
 	    xmlBufferWriteChar(buf, ">");
@@ -577,10 +578,10 @@
 	xmlChar *buffer;
 
 #ifndef XML_USE_BUFFER_CONTENT
-    buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
+	buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
 #else
-    buffer = xmlEncodeEntitiesReentrant(doc, 
-                                        xmlBufferContent(cur->content));
+	buffer = xmlEncodeEntitiesReentrant(doc, 
+			    xmlBufferContent(cur->content));
 #endif
 	if (buffer != NULL) {
 	    xmlBufferWriteCHAR(buf, buffer);
@@ -598,11 +599,6 @@
 	    (cur->children != cur->last))
 	    xmlBufferWriteChar(buf, "\n");
     }
-    if (!htmlIsAutoClosed(doc, cur)) {
-	xmlBufferWriteChar(buf, "</");
-	xmlBufferWriteCHAR(buf, cur->name);
-	xmlBufferWriteChar(buf, ">");
-    }
     xmlBufferWriteChar(buf, "</");
     xmlBufferWriteCHAR(buf, cur->name);
     xmlBufferWriteChar(buf, ">");
@@ -939,10 +935,6 @@
     }
     if ((cur->content == NULL) && (cur->children == NULL)) {
         if ((info != NULL) && (info->saveEndTag != 0) &&
-/*
-	    (xmlStrcasecmp(BAD_CAST info->name, BAD_CAST "html")) && 
-	    (xmlStrcasecmp(BAD_CAST info->name, BAD_CAST "body"))) {
-*/
 	    (strcmp(info->name, "html")) && (strcmp(info->name, "body"))) {
 	    xmlOutputBufferWriteString(buf, ">");
 	} else {