1
0
mirror of https://github.com/Uberi/Minetest-WorldEdit.git synced 2025-07-04 09:00:36 +02:00

Prevent OOM when setting region cube

When setting region cube, make sure player has not set two positions very far apart.

This can happen when player has been editing one part of the map, then travels to a distant part of the map and tries to start setting a new region.

This does not affect the ability to operate on large areas, nor the setting of the markers, just the region cube marking.
This commit is contained in:
Tai @ Flex
2017-01-02 21:00:26 +00:00
parent 92fe95fab7
commit 384825ac8f

View File

@ -1,6 +1,12 @@
worldedit.marker1 = {} worldedit.marker1 = {}
worldedit.marker2 = {} worldedit.marker2 = {}
worldedit.marker_region = {} worldedit.marker_region = {}
worldedit.cubesize = tonumber(minetest.setting_get("worldedit.cubesize") ) or 128
local function regioncube_sizecheck(pos1, pos2)
-- Check that the hypothenuse implies that no side exceeds the max size
return vector.distance(pos1, pos2) < math.ceil( worldedit.cubesize * math.sqrt(2) )
end
--marks worldedit region position 1 --marks worldedit region position 1
worldedit.mark_pos1 = function(name) worldedit.mark_pos1 = function(name)
@ -59,7 +65,7 @@ worldedit.mark_region = function(name)
worldedit.marker_region[name] = nil worldedit.marker_region[name] = nil
end end
if pos1 ~= nil and pos2 ~= nil then if pos1 ~= nil and pos2 ~= nil and regioncube_sizecheck(pos1, pos2) then
local pos1, pos2 = worldedit.sort_pos(pos1, pos2) local pos1, pos2 = worldedit.sort_pos(pos1, pos2)
local vec = vector.subtract(pos2, pos1) local vec = vector.subtract(pos2, pos1)