another couple of problem related to IsEmptyElement reported by Stéphane
* xmlreader.c python/tests/reader.py: another couple of problem
related to IsEmptyElement reported by Stéphane Bidoul needed
some fixes.
Daniel
diff --git a/xmlreader.c b/xmlreader.c
index 1d65df6..930ec53 100644
--- a/xmlreader.c
+++ b/xmlreader.c
@@ -382,10 +382,16 @@
} while ((reader->ctxt->node == NULL) &&
(reader->mode != XML_TEXTREADER_MODE_EOF));
if (reader->ctxt->node == NULL) {
- if (reader->ctxt->myDoc != NULL)
+ if (reader->ctxt->myDoc != NULL) {
reader->node = reader->ctxt->myDoc->children;
+ if ((reader->ctxt->input != NULL) &&
+ (reader->ctxt->input->cur != NULL) &&
+ (reader->ctxt->input->cur[-2] != '/'))
+ reader->wasempty = -1;
+ }
if (reader->node == NULL)
return(-1);
+ reader->state = XML_TEXTREADER_ELEMENT;
} else {
reader->node = reader->ctxt->nodeTab[0];
}
@@ -395,7 +401,14 @@
oldstate = reader->state;
olddepth = reader->ctxt->nodeNr;
oldnode = reader->node;
- wasempty = (((reader->wasempty == 1) && (reader->ctxt->node != NULL) &&
+ /*
+ * the <p></p> vs. <p/> distinction at the API level royally sucks,
+ * Microsoft priviledge ...
+ */
+ if (reader->wasempty == -1)
+ wasempty = 0;
+ else
+ wasempty = (((reader->wasempty == 1) && (reader->ctxt->node != NULL) &&
(reader->ctxt->node->last == reader->node)) ||
(reader->node != reader->ctxt->node));
@@ -1448,6 +1461,10 @@
return(0);
if (reader->node->children != NULL)
return(0);
+ if (reader->state == XML_TEXTREADER_END)
+ return(0);
+ if (reader->wasempty == -1)
+ return(0);
if (reader->node != reader->ctxt->node)
return(1);
if ((reader->ctxt->node != NULL) &&