From 38e07533825aa24f9e066b37b1070b9e3a795732 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Thu, 17 Apr 2025 19:54:58 +0300 Subject: [PATCH] add __ipairs metamethod support if missing in LuaJIT --- res/scripts/stdmin.lua | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/res/scripts/stdmin.lua b/res/scripts/stdmin.lua index 06c86832..634d4c39 100644 --- a/res/scripts/stdmin.lua +++ b/res/scripts/stdmin.lua @@ -3,6 +3,23 @@ local canvas_ffi_buffer local canvas_ffi_buffer_size = 0 +local ipairs_mt_supported = false +for i, _ in ipairs(setmetatable({l={1}}, { + __ipairs=function(self) return ipairs(self.l) end})) do + ipairs_mt_supported = true +end + +if not ipairs_mt_supported then + local raw_ipairs = ipairs + ipairs = function(t) + local metatable = getmetatable(t) + if metatable and metatable.__ipairs then + return metatable.__ipairs(t) + end + return raw_ipairs(t) + end +end + function __vc_Canvas_set_data(self, data) if type(data) == "cdata" then self:_set_data(tostring(ffi.cast("uintptr_t", data)))