applied patch from Malcolm Rowe to avoid namespace troubles on rollback

* parser.c: applied patch from Malcolm Rowe to avoid namespace
  troubles on rollback parsing of elements start #304761
* test/nsclean.xml result/noent/nsclean.xml result/nsclean.xml*:
  added it to the regression tests.
Daniel
diff --git a/ChangeLog b/ChangeLog
index beef272..d864b1e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Thu Jun  9 10:16:11 CEST 2005 Daniel Veillard <daniel@veillard.com>
+
+	* parser.c: applied patch from Malcolm Rowe to avoid namespace
+	  troubles on rollback parsing of elements start #304761
+	* test/nsclean.xml result/noent/nsclean.xml result/nsclean.xml*:
+	  added it to the regression tests.
+
 Thu Jun  9 00:33:50 CEST 2005 Daniel Veillard <daniel@veillard.com>
 
 	* parser.c include/libxml/xmlerror.h: applied patch from Rob Richards
diff --git a/parser.c b/parser.c
index b0d9f68..352ffa3 100644
--- a/parser.c
+++ b/parser.c
@@ -7535,6 +7535,7 @@
     int i, j, nbNs, attval;
     const xmlChar *base;
     unsigned long cur;
+    int nsNr = ctxt->nsNr;
 
     if (RAW != '<') return(NULL);
     NEXT1;
@@ -7555,6 +7556,8 @@
     nbdef = 0;
     nbNs = 0;
     attval = 0;
+    /* Forget any namespaces added during an earlier parse of this element. */
+    ctxt->nsNr = nsNr;
 
     localname = xmlParseQName(ctxt, &prefix);
     if (localname == NULL) {
diff --git a/result/noent/nsclean.xml b/result/noent/nsclean.xml
new file mode 100644
index 0000000..8f1ea82
--- /dev/null
+++ b/result/noent/nsclean.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<article xmlns="tag:foofoofoofoofoofoofoofoo" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">
+<foop:content xmlns="http://www.w3.org/1999/xhtml" xmlns:foop="tag:foofoofoofoofoofoofoofoo">
+</foop:content>
+</article>
diff --git a/result/nsclean.xml b/result/nsclean.xml
new file mode 100644
index 0000000..8f1ea82
--- /dev/null
+++ b/result/nsclean.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<article xmlns="tag:foofoofoofoofoofoofoofoo" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/">
+<foop:content xmlns="http://www.w3.org/1999/xhtml" xmlns:foop="tag:foofoofoofoofoofoofoofoo">
+</foop:content>
+</article>
diff --git a/result/nsclean.xml.rde b/result/nsclean.xml.rde
new file mode 100644
index 0000000..c606593
--- /dev/null
+++ b/result/nsclean.xml.rde
@@ -0,0 +1,10 @@
+0 1 article 0 0
+1 14 #text 0 1 
+
+1 1 foop:content 0 0
+2 14 #text 0 1 
+
+1 15 foop:content 0 0
+1 14 #text 0 1 
+
+0 15 article 0 0
diff --git a/result/nsclean.xml.rdr b/result/nsclean.xml.rdr
new file mode 100644
index 0000000..c606593
--- /dev/null
+++ b/result/nsclean.xml.rdr
@@ -0,0 +1,10 @@
+0 1 article 0 0
+1 14 #text 0 1 
+
+1 1 foop:content 0 0
+2 14 #text 0 1 
+
+1 15 foop:content 0 0
+1 14 #text 0 1 
+
+0 15 article 0 0
diff --git a/result/nsclean.xml.sax b/result/nsclean.xml.sax
new file mode 100644
index 0000000..b01aeae
--- /dev/null
+++ b/result/nsclean.xml.sax
@@ -0,0 +1,13 @@
+SAX.setDocumentLocator()
+SAX.startDocument()
+SAX.startElement(article, xmlns='tag:foofoofoofoofoofoofoofoo', xmlns:dc='http://purl.org/dc/elements/1.1/', xmlns:dcterms='http://purl.org/dc/terms/')
+SAX.characters(
+, 1)
+SAX.startElement(foop:content, xmlns='http://www.w3.org/1999/xhtml', xmlns:foop='tag:foofoofoofoofoofoofoofoo')
+SAX.characters(
+, 1)
+SAX.endElement(foop:content)
+SAX.characters(
+, 1)
+SAX.endElement(article)
+SAX.endDocument()
diff --git a/test/nsclean.xml b/test/nsclean.xml
new file mode 100644
index 0000000..c293ddb
--- /dev/null
+++ b/test/nsclean.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<article xmlns="tag:foofoofoofoofoofoofoofoo"
+  xmlns:dc="http://purl.org/dc/elements/1.1/"
+  xmlns:dcterms="http://purl.org/dc/terms/">
+<foop:content xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:foop="tag:foofoofoofoofoofoofoofoo">
+</foop:content>
+</article>
+