From b06b3685748924b80023bcf9f1e567c2953cff96 Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Tue, 8 May 2018 18:10:52 +0200 Subject: [PATCH] subtract switch start value to compatible with br_table --- src/de/inetsoftware/jwebassembly/module/ModuleWriter.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/de/inetsoftware/jwebassembly/module/ModuleWriter.java b/src/de/inetsoftware/jwebassembly/module/ModuleWriter.java index d4dafa6..2daf4d2 100644 --- a/src/de/inetsoftware/jwebassembly/module/ModuleWriter.java +++ b/src/de/inetsoftware/jwebassembly/module/ModuleWriter.java @@ -753,7 +753,12 @@ public abstract class ModuleWriter implements Closeable { byteCode.readInt(); } } else { - int count = -byteCode.readInt() + byteCode.readInt() + 1; + int low = byteCode.readInt(); + if( low != 0 ) { // the br_table starts ever with the value 0. That we need to subtract the start value if it different + writeConstInt( low ); + writeNumericOperator( NumericOperator.sub, ValueType.i32 ); + } + int count = byteCode.readInt() - low + 1; for( int i = 0; i < count; i++ ) { byteCode.readInt(); }