]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
Fix Minetest blaming the wrong mod for errors (#12241)
authorLars Müller <34514239+appgurueu@users.noreply.github.com>
Mon, 9 May 2022 18:42:43 +0000 (20:42 +0200)
committerGitHub <noreply@github.com>
Mon, 9 May 2022 18:42:43 +0000 (20:42 +0200)
Covers the case where mods insert their callbacks manually into "minetest.registered_<callbacks>" (often to achieve a particular order of execution).

builtin/client/register.lua
builtin/game/item.lua
builtin/game/register.lua

index 27a6b02d98dee92af24193d5f48b006db16d1151..61db4a30b7cd564d19cd98f3f19bcd8ebca001d7 100644 (file)
@@ -1,4 +1,3 @@
-
 core.callback_origins = {}
 
 local getinfo = debug.getinfo
index 439a71679bc42d744cfe85558b12cf32b02fd02a..5543e9a3ff2604fdbbeab2aa8c5d8f7bf8d91df8 100644 (file)
@@ -529,9 +529,7 @@ function core.node_dig(pos, node, digger)
        -- Run script hook
        for _, callback in ipairs(core.registered_on_dignodes) do
                local origin = core.callback_origins[callback]
-               if origin then
-                       core.set_last_run_mod(origin.mod)
-               end
+               core.set_last_run_mod(origin.mod)
 
                -- Copy pos and node because callback can modify them
                local pos_copy = vector.new(pos)
index 56e40c75c9ccf13baf978a6caad240590b1d9bc4..0be107c3633344a378736964522dcf730a213fb1 100644 (file)
@@ -403,8 +403,14 @@ function core.override_item(name, redefinition)
        register_item_raw(item)
 end
 
-
-core.callback_origins = {}
+do
+       local default = {mod = "??", name = "??"}
+       core.callback_origins = setmetatable({}, {
+               __index = function()
+                       return default
+               end
+       })
+end
 
 function core.run_callbacks(callbacks, mode, ...)
        assert(type(callbacks) == "table")
@@ -419,9 +425,7 @@ function core.run_callbacks(callbacks, mode, ...)
        local ret = nil
        for i = 1, cb_len do
                local origin = core.callback_origins[callbacks[i]]
-               if origin then
-                       core.set_last_run_mod(origin.mod)
-               end
+               core.set_last_run_mod(origin.mod)
                local cb_ret = callbacks[i](...)
 
                if mode == 0 and i == 1 then