From 732eb72a0c4e2fb4632b0f42762d102e0d98dffa Mon Sep 17 00:00:00 2001
From: Tomas Brod <tomasbrod@azet.sk>
Date: Fri, 17 Apr 2015 00:38:28 +0200
Subject: [PATCH] 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.
---
 builtin/game/register.lua | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

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
 
-- 
GitLab