From 021332c4aaaf8cfd18b3f08e5f069b203097f01d Mon Sep 17 00:00:00 2001 From: orwell Date: Thu, 9 Jan 2025 08:53:27 +0100 Subject: Two occupation loops seem to have issues with endless loops, add guards --- advtrains/occupation.lua | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'advtrains/occupation.lua') diff --git a/advtrains/occupation.lua b/advtrains/occupation.lua index 20a986e..b4b2bcd 100644 --- a/advtrains/occupation.lua +++ b/advtrains/occupation.lua @@ -103,7 +103,10 @@ function o.clear_all_items(train_id, pos) local t = occget(pos) if not t then return end local i = 1 + local grd = 0 while t[i] do + grd=grd+1 + if grd>10000 then error("loop guard occ clearall") end if t[i]==train_id then table.remove(t, i) table.remove(t, i) @@ -116,7 +119,10 @@ function o.clear_specific_item(train_id, pos, index) local t = occget(pos) if not t then return end local i = 1 + local grd = 0 while t[i] do + grd=grd+1 + if grd>10000 then error("loop guard occ clearall") end if t[i]==train_id and t[i+1]==index then table.remove(t, i) table.remove(t, i) -- cgit v1.2.3