Fix PullParser reuse regression

Commit 0424d12f9b8a19c4a451282bc8ae974f6109424d introduced
a regression: calling setInput() would not fully reset the
parser iff the parser had already parsed a <!DOCTYPE
tag.

This change contains a fix and a test.

Thanks to mike@ for the report.

Bug: https://code.google.com/p/android/issues/detail?id=182605
Change-Id: Icddc1c52bca3beaba7f5ee662d18757d6fce6cf2
diff --git a/luni/src/test/java/libcore/xml/PullParserTest.java b/luni/src/test/java/libcore/xml/PullParserTest.java
index b204c88..a52db1d 100644
--- a/luni/src/test/java/libcore/xml/PullParserTest.java
+++ b/luni/src/test/java/libcore/xml/PullParserTest.java
@@ -769,10 +769,24 @@
     public void testWhitespacesAfterDOCTYPE() throws Exception {
         XmlPullParser parser = newPullParser();
         String test = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-            "<!DOCTYPE root [\n" +
-            "<!ENTITY dummy \"dummy\">\n" +
-            "]>  \n" +
-            "<root></root>";
+                "<!DOCTYPE root [\n" +
+                "<!ENTITY dummy \"dummy\">\n" +
+                "]>  \n" +
+                "<root></root>";
+        assertParseSuccess(test, parser);
+    }
+
+    // Regression test for https://code.google.com/p/android/issues/detail?id=182605
+    public void testSetInputParserReuse() throws Exception {
+        XmlPullParser parser = newPullParser();
+        String test = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                "<!DOCTYPE root [\n" +
+                "<!ENTITY dummy \"dummy\">\n" +
+                "]>  \n" +
+                "<root></root>";
+        assertParseSuccess(test, parser);
+
+        // A second call to parser.setInput() on a parser should result in a fully-reset parser.
         assertParseSuccess(test, parser);
     }
 
diff --git a/xml/src/main/java/org/kxml2/io/KXmlParser.java b/xml/src/main/java/org/kxml2/io/KXmlParser.java
index 2e32bf1..e010f1d 100644
--- a/xml/src/main/java/org/kxml2/io/KXmlParser.java
+++ b/xml/src/main/java/org/kxml2/io/KXmlParser.java
@@ -1606,6 +1606,7 @@
         this.reader = reader;
 
         type = START_DOCUMENT;
+        parsedTopLevelStartTag = false;
         name = null;
         namespace = null;
         degenerated = false;