From b5906b2ec8657575cc4c0e9c2ec4f768454504d5 Mon Sep 17 00:00:00 2001 From: AsynchronousMatrix Date: Thu, 10 Aug 2023 17:40:28 +0100 Subject: [PATCH] chore: throw 'LuaError::RuntimeError' if first byte indicates an error --- src/lune/builtins/luau.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/lune/builtins/luau.rs b/src/lune/builtins/luau.rs index 6b84df7..3bebbee 100644 --- a/src/lune/builtins/luau.rs +++ b/src/lune/builtins/luau.rs @@ -4,6 +4,7 @@ use mlua::Compiler as LuaCompiler; use crate::lune::lua::table::TableBuilder; const DEFAULT_DEBUG_NAME: &str = "luau.load(...)"; +const BYTECODE_ERROR_BYTE: u8 = 0; struct CompileOptions { pub optimization_level: u8, @@ -114,7 +115,14 @@ fn compile_source<'lua>( .set_debug_level(_options.debug_level) .compile(source); - lua.create_string(source_bytecode_bytes) + let first_byte = source_bytecode_bytes.first().unwrap(); + + match *first_byte { + BYTECODE_ERROR_BYTE => Err(LuaError::RuntimeError( + String::from_utf8(source_bytecode_bytes).unwrap(), + )), + _ => lua.create_string(source_bytecode_bytes), + } } fn load_source<'a>(