diff --git a/src/main/java/org/codehaus/plexus/util/xml/pull/MXParser.java b/src/main/java/org/codehaus/plexus/util/xml/pull/MXParser.java index 14d36a79..1c2ca55f 100644 --- a/src/main/java/org/codehaus/plexus/util/xml/pull/MXParser.java +++ b/src/main/java/org/codehaus/plexus/util/xml/pull/MXParser.java @@ -3897,7 +3897,7 @@ private char more() fillBuf(); // this return value should be ignored as it is used in epilog parsing ... if ( reachedEnd ) - return (char) -1; + throw new EOFException( "no more data available" + getPositionDescription() ); } final char ch = buf[pos++]; // line/columnNumber diff --git a/src/test/java/org/codehaus/plexus/util/xml/pull/MXParserTest.java b/src/test/java/org/codehaus/plexus/util/xml/pull/MXParserTest.java index 8f7ef6b5..d62cf478 100644 --- a/src/test/java/org/codehaus/plexus/util/xml/pull/MXParserTest.java +++ b/src/test/java/org/codehaus/plexus/util/xml/pull/MXParserTest.java @@ -724,6 +724,58 @@ public void testSubsequentMalformedProcessingInstructionNoClosingQuestionMark() * * @throws java.lang.Exception if any. */ + @Test + public void testSubsequentAbortedProcessingInstruction() + throws Exception + { + MXParser parser = new MXParser(); + StringBuilder sb = new StringBuilder(); + sb.append( "" ); + sb.append( "" ); + sb.append( "