diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2015-08-20 16:34:30 +1000 |
---|---|---|
committer | Hao Xia <hao@optimizely.com> | 2017-01-10 19:05:01 -0800 |
commit | c89d821a4f875133abeccd68d996e0a08f93e08d (patch) | |
tree | b2390e2f11ec3c5f34b85c01c59e4014e5c696c2 /src/reflect/scala/reflect/internal/Names.scala | |
parent | 827d69d48e96d9add75ce19e06b374610784c936 (diff) | |
download | scala-c89d821a4f875133abeccd68d996e0a08f93e08d.tar.gz scala-c89d821a4f875133abeccd68d996e0a08f93e08d.tar.bz2 scala-c89d821a4f875133abeccd68d996e0a08f93e08d.zip |
Fix SIOOBE in Name#pos for substrings of length 1
Diffstat (limited to 'src/reflect/scala/reflect/internal/Names.scala')
-rw-r--r-- | src/reflect/scala/reflect/internal/Names.scala | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/reflect/scala/reflect/internal/Names.scala b/src/reflect/scala/reflect/internal/Names.scala index 9d39ef8b42..055f7c9d5b 100644 --- a/src/reflect/scala/reflect/internal/Names.scala +++ b/src/reflect/scala/reflect/internal/Names.scala @@ -296,11 +296,13 @@ trait Names extends api.Names { */ final def pos(s: String, start: Int): Int = { var i = pos(s.charAt(0), start) - while (i + s.length() <= len) { + val sLen = s.length() + if (sLen == 1) return i + while (i + sLen <= len) { var j = 1 while (s.charAt(j) == chrs(index + i + j)) { j += 1 - if (j == s.length()) return i + if (j == sLen) return i } i = pos(s.charAt(0), i + 1) } |