- 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 {