From 1fd0276b78f385c9d35ed5b086323d45f8048789 Mon Sep 17 00:00:00 2001 From: "JesusFreke@JesusFreke.com" Date: Sun, 13 Jun 2010 20:34:00 +0000 Subject: [PATCH] Fix an issue parsing arrays of primitive types when parsing param lists git-svn-id: https://smali.googlecode.com/svn/trunk@752 55b6fa8a-2a1e-11de-a435-ffa8d773f76a --- smali/src/main/antlr3/org/jf/smali/smaliParser.g | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/smali/src/main/antlr3/org/jf/smali/smaliParser.g b/smali/src/main/antlr3/org/jf/smali/smaliParser.g index ae13beb1..c895e72d 100644 --- a/smali/src/main/antlr3/org/jf/smali/smaliParser.g +++ b/smali/src/main/antlr3/org/jf/smali/smaliParser.g @@ -242,13 +242,16 @@ import org.jf.dexlib.Code.Format.*; case '[': { int i = typeStartIndex; - while (str.charAt(++i) == '['); - while (str.charAt(++i) != ';'); + while (str.charAt(++i) == '['); - token.setType(ARRAY_DESCRIPTOR); - token.setText(str.substring(typeStartIndex, i + 1)); - token.setStopIndex(baseToken.getStartIndex() + i); - break; + if (str.charAt(i++) == 'L') { + while (str.charAt(i++) != ';'); + } + + token.setType(ARRAY_DESCRIPTOR); + token.setText(str.substring(typeStartIndex, i)); + token.setStopIndex(baseToken.getStartIndex() + i - 1); + break; } default: throw new RuntimeException(String.format("Invalid character '\%c' in param list \"\%s\" at position \%d", str.charAt(typeStartIndex), str, typeStartIndex));