From 6fc9feca702a0799667ef98e64324599691f2a65 Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Fri, 15 May 2020 17:52:05 +0200 Subject: [PATCH] better error message --- .../jwebassembly/module/FunctionName.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/de/inetsoftware/jwebassembly/module/FunctionName.java b/src/de/inetsoftware/jwebassembly/module/FunctionName.java index 789973f..9fa7ae9 100644 --- a/src/de/inetsoftware/jwebassembly/module/FunctionName.java +++ b/src/de/inetsoftware/jwebassembly/module/FunctionName.java @@ -21,6 +21,7 @@ import java.util.Iterator; import javax.annotation.Nonnull; import de.inetsoftware.classparser.Member; +import de.inetsoftware.jwebassembly.WasmException; import de.inetsoftware.jwebassembly.wasm.AnyType; import de.inetsoftware.jwebassembly.wasm.ValueTypeParser; @@ -109,13 +110,17 @@ public class FunctionName { * the full Java method signature like "com/foo/Bar.method()V" */ public FunctionName( String signatureName ) { - int idx1 = signatureName.indexOf( '.' ); - this.className = signatureName.substring( 0, idx1 ); - int idx2 = signatureName.indexOf( '(', idx1 ); - this.methodName = signatureName.substring( idx1 + 1, idx2 ); - this.fullName = signatureName.substring( 0, idx2 ); - this.signatureName = signatureName; - this.signature = signatureName.substring( idx2 ); + try { + int idx1 = signatureName.indexOf( '.' ); + this.className = signatureName.substring( 0, idx1 ); + int idx2 = signatureName.indexOf( '(', idx1 ); + this.methodName = signatureName.substring( idx1 + 1, idx2 ); + this.fullName = signatureName.substring( 0, idx2 ); + this.signatureName = signatureName; + this.signature = signatureName.substring( idx2 ); + } catch( IndexOutOfBoundsException ex ) { + throw WasmException.create( "Invalid method signature: " + signatureName, ex ); + } } /**