From 7eb0406db88e876cb1f70ea5ddbf7af0a99b5cb3 Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Sun, 26 Apr 2020 19:47:51 +0200 Subject: [PATCH] Only ASCII strings as comment --- .../jwebassembly/module/WasmCodeBuilder.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java b/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java index 49e791e..3689f25 100644 --- a/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java +++ b/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java @@ -458,7 +458,11 @@ public abstract class WasmCodeBuilder { Integer id = strings.get( value ); FunctionName name = strings.getStringConstantFunction(); instructions.add( new WasmConstInstruction( id, ValueType.i32, javaCodePos, lineNumber ) ); - instructions.add( new WasmCallInstruction( name, javaCodePos, lineNumber, types, false, (String)value ) ); + String comment = (String)value; + if( !isAscii( comment ) ) { + comment = null; + } + instructions.add( new WasmCallInstruction( name, javaCodePos, lineNumber, types, false, comment ) ); } else if( value instanceof Number ) { instructions.add( new WasmConstInstruction( (Number)value, javaCodePos, lineNumber ) ); } else if( value instanceof ConstantClass ) { @@ -473,6 +477,25 @@ public abstract class WasmCodeBuilder { } } + /** + * if the string contains only ASCCI characters + * + * @param str + * the staring + * @return true, if only ASCII + */ + private static boolean isAscii( String str ) { + int length = str.length(); + for( int i = 0; i < length; i++ ) { + int c = str.charAt( i ); + if( c >= 0x20 && c < 0x7F ) { + continue; + } + return false; + } + return true; + } + /** * Add a numeric operation instruction *