mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-07-13 09:01:53 +03:00
another couple of problem related to IsEmptyElement reported by Stphane
* xmlreader.c python/tests/reader.py: another couple of problem related to IsEmptyElement reported by Stphane Bidoul needed some fixes. Daniel
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
Thu Jan 2 15:15:26 CET 2003 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
|
* xmlreader.c python/tests/reader.py: another couple of problem
|
||||||
|
related to IsEmptyElement reported by St<53>phane Bidoul needed
|
||||||
|
some fixes.
|
||||||
|
|
||||||
Thu Jan 2 13:57:07 CET 2003 Daniel Veillard <daniel@veillard.com>
|
Thu Jan 2 13:57:07 CET 2003 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
* libxml.spec.in python/Makefile.am python/drv_libxml2.py:
|
* libxml.spec.in python/Makefile.am python/drv_libxml2.py:
|
||||||
|
@ -377,6 +377,28 @@ if res != expect:
|
|||||||
print res
|
print res
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
doc="""<test><p></p></test>"""
|
||||||
|
expect="""1 (test) [None] 0 0
|
||||||
|
1 (p) [None] 0 1
|
||||||
|
15 (p) [None] 0 1
|
||||||
|
15 (test) [None] 0 0
|
||||||
|
"""
|
||||||
|
res = tst_reader(doc)
|
||||||
|
if res != expect:
|
||||||
|
print "test13 failed"
|
||||||
|
print res
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
doc="""<p></p>"""
|
||||||
|
expect="""1 (p) [None] 0 0
|
||||||
|
15 (p) [None] 0 0
|
||||||
|
"""
|
||||||
|
res = tst_reader(doc)
|
||||||
|
if res != expect:
|
||||||
|
print "test14 failed"
|
||||||
|
print res
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
#
|
#
|
||||||
# cleanup for memory allocation counting
|
# cleanup for memory allocation counting
|
||||||
#
|
#
|
||||||
|
21
xmlreader.c
21
xmlreader.c
@ -382,10 +382,16 @@ xmlTextReaderRead(xmlTextReaderPtr reader) {
|
|||||||
} while ((reader->ctxt->node == NULL) &&
|
} while ((reader->ctxt->node == NULL) &&
|
||||||
(reader->mode != XML_TEXTREADER_MODE_EOF));
|
(reader->mode != XML_TEXTREADER_MODE_EOF));
|
||||||
if (reader->ctxt->node == NULL) {
|
if (reader->ctxt->node == NULL) {
|
||||||
if (reader->ctxt->myDoc != NULL)
|
if (reader->ctxt->myDoc != NULL) {
|
||||||
reader->node = reader->ctxt->myDoc->children;
|
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)
|
if (reader->node == NULL)
|
||||||
return(-1);
|
return(-1);
|
||||||
|
reader->state = XML_TEXTREADER_ELEMENT;
|
||||||
} else {
|
} else {
|
||||||
reader->node = reader->ctxt->nodeTab[0];
|
reader->node = reader->ctxt->nodeTab[0];
|
||||||
}
|
}
|
||||||
@ -395,7 +401,14 @@ xmlTextReaderRead(xmlTextReaderPtr reader) {
|
|||||||
oldstate = reader->state;
|
oldstate = reader->state;
|
||||||
olddepth = reader->ctxt->nodeNr;
|
olddepth = reader->ctxt->nodeNr;
|
||||||
oldnode = reader->node;
|
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->ctxt->node->last == reader->node)) ||
|
||||||
(reader->node != reader->ctxt->node));
|
(reader->node != reader->ctxt->node));
|
||||||
|
|
||||||
@ -1448,6 +1461,10 @@ xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader) {
|
|||||||
return(0);
|
return(0);
|
||||||
if (reader->node->children != NULL)
|
if (reader->node->children != NULL)
|
||||||
return(0);
|
return(0);
|
||||||
|
if (reader->state == XML_TEXTREADER_END)
|
||||||
|
return(0);
|
||||||
|
if (reader->wasempty == -1)
|
||||||
|
return(0);
|
||||||
if (reader->node != reader->ctxt->node)
|
if (reader->node != reader->ctxt->node)
|
||||||
return(1);
|
return(1);
|
||||||
if ((reader->ctxt->node != NULL) &&
|
if ((reader->ctxt->node != NULL) &&
|
||||||
|
Reference in New Issue
Block a user