Index: xstream/src/java/com/thoughtworks/xstream/core/util/XmlHeaderAwareReader.java =================================================================== --- xstream/src/java/com/thoughtworks/xstream/core/util/XmlHeaderAwareReader.java (revision 1488) +++ xstream/src/java/com/thoughtworks/xstream/core/util/XmlHeaderAwareReader.java (working copy) @@ -54,9 +54,7 @@ * @since 1.3 */ public XmlHeaderAwareReader(final InputStream in) throws UnsupportedEncodingException, IOException { - final PushbackInputStream pin = in instanceof PushbackInputStream - ? (PushbackInputStream)in - : new PushbackInputStream(in, 64); + final PushbackInputStream pin = new PushbackInputStream(in, 64); final Map header = getHeader(pin); version = Double.parseDouble((String)header.get(KEY_VERSION)); reader = new InputStreamReader(pin, (String)header.get(KEY_ENCODING)); Index: xstream/src/test/com/thoughtworks/xstream/core/util/XmlHeaderAwareReaderTest.java =================================================================== --- xstream/src/test/com/thoughtworks/xstream/core/util/XmlHeaderAwareReaderTest.java (revision 1488) +++ xstream/src/test/com/thoughtworks/xstream/core/util/XmlHeaderAwareReaderTest.java (working copy) @@ -12,8 +12,10 @@ import java.io.ByteArrayInputStream; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; +import java.io.PushbackInputStream; import junit.framework.TestCase; @@ -54,4 +56,10 @@ XmlHeaderAwareReader reader = new XmlHeaderAwareReader(in); assertEquals(1.1, reader.getVersion(), 0.001); } + + public void testReadFromPreexistingPushbackInputStream() throws IOException { + InputStream in = new PushbackInputStream(new ByteArrayInputStream("".getBytes("us-ascii")), 1); + XmlHeaderAwareReader reader = new XmlHeaderAwareReader(in); + assertEquals(1.1, reader.getVersion(), 0.001); + } }