Closed
Description
ConstructingParser seems to consume heaps of memory when parsing invalid XML nodes:
Welcome to Scala version 2.10.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_17).
Type in expressions to have them evaluated.
Type :help for more information.
scala> import scala.xml.parsing._
import scala.xml.parsing._
scala> import scala.xml._
import scala.xml._
scala> import scala.io._
import scala.io._
scala> ConstructingParser.fromSource(Source.fromString("<node attr=\""), true).document.docElem
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2367)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:587)
at java.lang.StringBuilder.append(StringBuilder.java:214)
at scala.collection.mutable.StringBuilder.append(StringBuilder.scala:264)
at scala.xml.parsing.MarkupParserCommon$class.xAttributeValue(MarkupParserCommon.scala:66)
at scala.xml.parsing.ConstructingParser.xAttributeValue(ConstructingParser.scala:47)
at scala.xml.parsing.MarkupParserCommon$class.xAttributeValue(MarkupParserCommon.scala:74)
at scala.xml.parsing.ConstructingParser.xAttributeValue(ConstructingParser.scala:47)
at scala.xml.parsing.MarkupParser$class.xAttributes(MarkupParser.scala:310)
at scala.xml.parsing.ConstructingParser.xAttributes(ConstructingParser.scala:47)
at scala.xml.parsing.MarkupParser$class.mkAttributes(MarkupParser.scala:282)
at scala.xml.parsing.ConstructingParser.mkAttributes(ConstructingParser.scala:47)
at scala.xml.parsing.ConstructingParser.mkAttributes(ConstructingParser.scala:47)
at scala.xml.parsing.MarkupParserCommon$class.xTag(MarkupParserCommon.scala:44)
at scala.xml.parsing.ConstructingParser.xTag(ConstructingParser.scala:47)
at scala.xml.parsing.MarkupParser$class.element1(MarkupParser.scala:553)
at scala.xml.parsing.ConstructingParser.element1(ConstructingParser.scala:47)
at scala.xml.parsing.MarkupParser$class.content1(MarkupParser.scala:418)
at scala.xml.parsing.ConstructingParser.content1(ConstructingParser.scala:47)
at scala.xml.parsing.MarkupParser$class.document(MarkupParser.scala:239)
at scala.xml.parsing.ConstructingParser.document(ConstructingParser.scala:47)
at .<init>(<console>:17)
at .<clinit>(<console>)
at .<init>(<console>:7)
at .<clinit>(<console>)
at $print(<console>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)