diff --git a/dexlib/src/main/java/org/jf/dexlib/Code/Analysis/MethodAnalyzer.java b/dexlib/src/main/java/org/jf/dexlib/Code/Analysis/MethodAnalyzer.java index 9edf37b1..60a2b1e5 100644 --- a/dexlib/src/main/java/org/jf/dexlib/Code/Analysis/MethodAnalyzer.java +++ b/dexlib/src/main/java/org/jf/dexlib/Code/Analysis/MethodAnalyzer.java @@ -3128,7 +3128,7 @@ public class MethodAnalyzer { TypeIdItem methodClass = methodIdItem.getContainingClass(); boolean isInit = false; - if (methodIdItem.getMethodName().getStringValue().charAt(0) == '<') { + if (methodIdItem.getMethodName().getStringValue().equals("")) { if ((invokeType & INVOKE_DIRECT) != 0) { isInit = true; } else { diff --git a/smali/src/main/jflex/smaliLexer.flex b/smali/src/main/jflex/smaliLexer.flex index 81b9979b..c98ebd86 100644 --- a/smali/src/main/jflex/smaliLexer.flex +++ b/smali/src/main/jflex/smaliLexer.flex @@ -631,7 +631,7 @@ Type = {PrimitiveType} | {ClassDescriptor} | {ArrayDescriptor} {PrimitiveType} {PrimitiveType}+ { return newToken(PARAM_LIST_OR_ID); } {Type} {Type}+ { return newToken(PARAM_LIST); } {SimpleName} { return newToken(SIMPLE_NAME); } - "" | "" { return newToken(METHOD_NAME); } + "<" {SimpleName} ">" { return newToken(METHOD_NAME); } } /*Symbols/Whitespace/EOF*/ diff --git a/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.smali b/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.smali index 7fd9b65a..b623a39b 100644 --- a/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.smali +++ b/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.smali @@ -45,4 +45,5 @@ L[Ljava/lang/String; [java/lang/String; [; - \ No newline at end of file + + \ No newline at end of file diff --git a/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.tokens b/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.tokens index 531622e9..febf8027 100644 --- a/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.tokens +++ b/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.tokens @@ -45,4 +45,5 @@ INVALID_TOKEN("[") VOID_TYPE("V") INVALID_TOKEN("[") SIMPLE_NAME("java") INVALID_TOKEN("/") SIMPLE_NAME("lang") INVALID_TOKEN("/") SIMPLE_NAME("String") INVALID_TOKEN(";") INVALID_TOKEN("[") INVALID_TOKEN(";") -INVALID_TOKEN("<") SIMPLE_NAME("linit") INVALID_TOKEN(">") \ No newline at end of file +METHOD_NAME("") +METHOD_NAME("")