From 7232ede09db7f26d601ffb18459a6e4b399f072e Mon Sep 17 00:00:00 2001 From: Redo Date: Mon, 6 Oct 2025 23:03:12 -0500 Subject: [PATCH] make :members() not return index, add -DBLLUA_ALLOWFFI, allow reading modules/lualib/, bug fixes --- BlockLua.dll | Bin 378956 -> 379468 bytes readme.md | 23 ++++++++-------- src/bllua4.cpp | 21 ++++++++------- src/lua-env-safe.lua | 20 +++++++------- src/lua-env.lua | 4 +++ src/util/libbl.lua | 58 ++++++++++++++++++++++++----------------- src/util/libts-lua.lua | 5 ++-- src/util/std.lua | 2 +- 8 files changed, 76 insertions(+), 57 deletions(-) diff --git a/BlockLua.dll b/BlockLua.dll index a11bb18335f804d638bf3b4d7a73cee0418b6557..35465213ed3821161fb55ca61e8685df6c5fb5c0 100644 GIT binary patch delta 8998 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