From b994bbc5fd1603251d883518e42d6fc73c4ce271 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Sat, 13 Feb 2016 19:11:01 +0100 Subject: [PATCH] abort mapgen if no nodes are set and execute collectgarbage to clean memory --- src/mapgen_v6.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/mapgen_v6.lua b/src/mapgen_v6.lua index f9ff731..b37b136 100644 --- a/src/mapgen_v6.lua +++ b/src/mapgen_v6.lua @@ -208,6 +208,8 @@ minetest.register_on_generated(function(minp, maxp, seed) -- Reseed random pr = PseudoRandom(seed+68) + local nodes_added + -- Loop through columns in chunk local smooth = smooth and not snowy local write_to_map = false @@ -251,6 +253,7 @@ minetest.register_on_generated(function(minp, maxp, seed) local vi = area:index(x, ground_y, z) if data[vi] == c.leaves or data[vi] == c.jungleleaves then + nodes_added = true for y = ground_y, -16, -1 do local vi = area:index(x, y, z) local id = data[vi] @@ -269,6 +272,7 @@ minetest.register_on_generated(function(minp, maxp, seed) end end else + nodes_added = true write_to_map = true if not nvals_ice then nvals_ice = minetest.get_perlin_map(np_ice, chulens):get2dMap_flat({x=x0, y=z0}) @@ -457,6 +461,14 @@ minetest.register_on_generated(function(minp, maxp, seed) end end + -- abort if mapgen doesn't change sth + if not nodes_added then + return + end + + -- try to fix oom memory crashes + minetest.after(0, collectgarbage) + if num ~= 1 then for _,i in pairs(snow_tab) do -- set snow