diff options
Diffstat (limited to 'src/scalap/scala/tools/scalap/scalax/rules/scalasig/ClassFileParser.scala')
-rw-r--r-- | src/scalap/scala/tools/scalap/scalax/rules/scalasig/ClassFileParser.scala | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ClassFileParser.scala b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ClassFileParser.scala index d53d8e1fc1..84f28af7ce 100644 --- a/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ClassFileParser.scala +++ b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ClassFileParser.scala @@ -65,8 +65,11 @@ class ByteCode(val bytes : Array[Byte], val pos : Int, val length : Int) { * stores and array of bytes for the decompiler */ def fromUTF8StringAndBytes = { - val chunk: Array[Byte] = bytes drop pos take length - StringBytesPair(io.Codec.fromUTF8(chunk).mkString, chunk) + val chunk: Array[Byte] = new Array[Byte](length) + System.arraycopy(bytes, pos, chunk, 0, length) + val str = new String(io.Codec.fromUTF8(bytes, pos, length)) + + StringBytesPair(str, chunk) } def byte(i : Int) = bytes(pos) & 0xFF |