From: Tomas Brod Date: Thu, 16 Apr 2015 22:38:28 +0000 (+0200) Subject: Fix minetest.clear_* creating new LOCAL table instead of clearing the existing one. X-Git-Tag: 0.4.13~328 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=732eb72a0c4e2fb4632b0f42762d102e0d98dffa;p=oweals%2Fminetest.git Fix minetest.clear_* creating new LOCAL table instead of clearing the existing one. On calling clear_redistered_biomes the registered_biomes table is cleared by creating a new empty table, but the pointer is not updated to point to the new one. So after calling more register_biome, the registered_biome table always contains 0 items, which is an error. Instead, the table is cleared by removing all its items so the pointer (minetest.registered_*) remains valid. --- diff --git a/builtin/game/register.lua b/builtin/game/register.lua index f286113ec..cb0840241 100644 --- a/builtin/game/register.lua +++ b/builtin/game/register.lua @@ -398,7 +398,9 @@ local function make_registration_wrap(reg_fn_name, clear_fn_name) local orig_clear_fn = core[clear_fn_name] core[clear_fn_name] = function() - list = {} + for k in pairs(list) do + list[k] = nil + end return orig_clear_fn() end