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);
     }
   }