From 8bfaa26a1483e7875b649e23f045abe9d0fe9f7c Mon Sep 17 00:00:00 2001 From: jeff Date: Sun, 28 Sep 2014 19:47:51 -0400 Subject: fixed a crash parsing method signatures with generics in them --- src/cuchaz/enigma/mapping/SignatureUpdater.java | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/cuchaz/enigma/mapping/SignatureUpdater.java b/src/cuchaz/enigma/mapping/SignatureUpdater.java index d1216bd..809473e 100644 --- a/src/cuchaz/enigma/mapping/SignatureUpdater.java +++ b/src/cuchaz/enigma/mapping/SignatureUpdater.java @@ -69,19 +69,32 @@ public class SignatureUpdater throws IOException { // read all the characters in the buffer until we hit a ';' + // remember to treat generics correctly StringBuilder buf = new StringBuilder(); + int depth = 0; int i = -1; while( ( i = reader.read() ) != -1 ) { char c = (char)i; - if( c == ';' ) + if( c == '<' ) { - return buf.toString(); + depth++; } - else + else if( c == '>' ) { - buf.append( c ); + depth--; + } + else if( depth == 0 ) + { + if( c == ';' ) + { + return buf.toString(); + } + else + { + buf.append( c ); + } } } -- cgit v1.2.3