Mercurial > p > unluac > hgcode
changeset 496:1d1d06be878e
Remove null terminator validation (Lua doesn't do this)
author | tehtmi |
---|---|
date | Tue, 04 Jul 2023 14:31:01 -0700 |
parents | cc858b402f6d |
children | cb98e6687c36 |
files | src/unluac/assemble/Assembler.java src/unluac/parse/LString.java src/unluac/parse/LStringType.java |
diffstat | 3 files changed, 11 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/unluac/assemble/Assembler.java Tue Jul 04 14:18:55 2023 -0700 +++ b/src/unluac/assemble/Assembler.java Tue Jul 04 14:31:01 2023 -0700 @@ -724,12 +724,12 @@ if(string == null) { return LString.NULL; } else { - return new LString(string); + return new LString(string, '\0'); } } private LString convert_long_string(BHeader header, String string) { - return new LString(string, true); + return new LString(string, '\0', true); } }
--- a/src/unluac/parse/LString.java Tue Jul 04 14:18:55 2023 -0700 +++ b/src/unluac/parse/LString.java Tue Jul 04 14:31:01 2023 -0700 @@ -7,14 +7,20 @@ public static final LString NULL = new LString(""); public final String value; + public final char terminator; public boolean islong; public LString(String value) { - this(value, false); + this(value, '\0', false); } - public LString(String value, boolean islong) { + public LString(String value, char terminator) { + this(value, terminator, false); + } + + public LString(String value, char terminator, boolean islong) { this.value = value; + this.terminator = terminator; this.islong = islong; }
--- a/src/unluac/parse/LStringType.java Tue Jul 04 14:18:55 2023 -0700 +++ b/src/unluac/parse/LStringType.java Tue Jul 04 14:31:01 2023 -0700 @@ -48,15 +48,12 @@ return LString.NULL; } else { char last = b.charAt(b.length() - 1); - if(last != '\0') { - throw new IllegalStateException("String value does not have a null terminator"); - } b.delete(b.length() - 1, b.length()); String s = b.toString(); if(header.debug) { System.out.println("-- parsed <string> \"" + s + "\""); } - return new LString(s); + return new LString(s, last); } }