luapack icon indicating copy to clipboard operation
luapack copied to clipboard

debug.getregistry fix inside includes/init.lua

Open Yogpod opened this issue 2 years ago • 0 comments

i'm sure you knew but rubat destroyed debug.getregistry, and appended a temporary fix to includes/init.lua

Here's my version of the fix, and below that is his version.

local _R

OldFindMetaTable = OldFindMetaTable or FindMetaTable
function FindMetaTable(name)
	return name and _R[name] or nil
end

do
	_R = setmetatable({
		[1] = function() end,
		[2] = _G,
		[3] = {},
	}, {
		__index = function(obj, key)
			local tab = key and oldFindMetaTable(key)
			if rawget(obj, key) then
				return rawget(obj, key)
			elseif tab then
				obj[key] = tab
				return tab
			else
				return nil
			end
		end
	})
end

function debug.getregistry()
	return _R
end


-- Temporary hack
local meta = {}
function meta.__index(self, key)
	return FindMetaTable(key)
end

local metas = {}
function meta.__newindex(self, key, value)
	metas[ key ] = value
end

debug.getregistry = function()
	local tbl = {}
	setmetatable(tbl, meta)

	return tbl
end

local oldFindMetaTable = FindMetaTable
FindMetaTable = function( name )
	local f = oldFindMetaTable( name )
	if ( f ) then return f end

	return metas[ name ]
end

Yogpod avatar Jan 12 '24 03:01 Yogpod