summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-10-31 18:26:41 +0000
committerPaul Phillips <paulp@improving.org>2011-10-31 18:26:41 +0000
commitbf0b9fcf84d346231db868e522dce17ded59888e (patch)
tree96018455ecbe2abcab7a1f347c814347c9a1d2e0 /src/library
parent8de176f454d1e365b1297de21a0ed4a45c04a87f (diff)
downloadscala-bf0b9fcf84d346231db868e522dce17ded59888e.tar.gz
scala-bf0b9fcf84d346231db868e522dce17ded59888e.tar.bz2
scala-bf0b9fcf84d346231db868e522dce17ded59888e.zip
Fixes NPE using iterator with an XML attribute ...
Fixes NPE using iterator with an XML attribute being null or None ) (SI-5052 Also fixes incorrect size method (SI-5115 ) Contributed by Jordi Salvat i Alabart. Closes SI-5052, SI-5115, no review.
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/xml/Attribute.scala11
-rw-r--r--src/library/scala/xml/MetaData.scala4
-rw-r--r--src/library/scala/xml/Null.scala1
3 files changed, 12 insertions, 4 deletions
diff --git a/src/library/scala/xml/Attribute.scala b/src/library/scala/xml/Attribute.scala
index 9523891a9c..6b68e97412 100644
--- a/src/library/scala/xml/Attribute.scala
+++ b/src/library/scala/xml/Attribute.scala
@@ -73,6 +73,17 @@ abstract trait Attribute extends MetaData {
(next(arg, scope, key) == null) && (next wellformed scope)
}
+ /** Returns an iterator on attributes */
+ override def iterator: Iterator[MetaData] = {
+ if (value == null) next.iterator
+ else Iterator.single(this) ++ next.iterator
+ }
+
+ override def size: Int = {
+ if (value == null) next.size
+ else 1 + next.size
+ }
+
/** Appends string representation of only this attribute to stringbuffer.
*/
protected def toString1(sb: StringBuilder) {
diff --git a/src/library/scala/xml/MetaData.scala b/src/library/scala/xml/MetaData.scala
index 9c603141d5..62d235ee12 100644
--- a/src/library/scala/xml/MetaData.scala
+++ b/src/library/scala/xml/MetaData.scala
@@ -141,10 +141,6 @@ abstract class MetaData extends Iterable[MetaData] with Equality with Serializab
}
protected def basisForHashCode: Seq[Any] = List(this.asAttrMap)
- /** Returns an iterator on attributes */
- def iterator: Iterator[MetaData] = Iterator.single(this) ++ next.iterator
- override def size: Int = 1 + iterator.length
-
/** filters this sequence of meta data */
override def filter(f: MetaData => Boolean): MetaData =
if (f(this)) copy(next filter f)
diff --git a/src/library/scala/xml/Null.scala b/src/library/scala/xml/Null.scala
index 0db4a074c5..2c1c569a44 100644
--- a/src/library/scala/xml/Null.scala
+++ b/src/library/scala/xml/Null.scala
@@ -20,6 +20,7 @@ import scala.collection.Iterator
*/
case object Null extends MetaData {
override def iterator = Iterator.empty
+ override def size = 0
override def append(m: MetaData, scope: NamespaceBinding = TopScope): MetaData = m
override def filter(f: MetaData => Boolean): MetaData = this