diff options
-rw-r--r-- | script/core/guide.lua | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/script/core/guide.lua b/script/core/guide.lua index e4871060..c7a784b7 100644 --- a/script/core/guide.lua +++ b/script/core/guide.lua @@ -3016,7 +3016,7 @@ function m.searchSameFields(status, simple, mode) locks[start] = lock end if lock[obj] then - return + return false end lock[obj] = true queueLen = queueLen + 1 @@ -3032,13 +3032,17 @@ function m.searchSameFields(status, simple, mode) forces[queueLen] = force end end + return true end local function pushQueue(obj, start, force) if obj.type == 'getlocal' or obj.type == 'setlocal' then obj = obj.node end - appendQueue(obj, start, force) + if appendQueue(obj, start, force) == false then + -- no need to process the rest if obj is already locked + return + end if obj.type == 'local' and obj.ref then for _, ref in ipairs(obj.ref) do appendQueue(ref, start, force) |