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/ChangeLog b/ChangeLog
index 9f8a3ab..c5ce5c9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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éphane Bidoul needed 
+	  some fixes.
+
 Thu Jan  2 13:57:07 CET 2003 Daniel Veillard <daniel@veillard.com>
 
 	* libxml.spec.in python/Makefile.am python/drv_libxml2.py:
diff --git a/python/tests/reader.py b/python/tests/reader.py
index 83fa0e4..5fd6160 100755
--- a/python/tests/reader.py
+++ b/python/tests/reader.py
@@ -377,6 +377,28 @@
     print res
     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
 #
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) &&