summaryrefslogtreecommitdiff
path: root/script
diff options
context:
space:
mode:
Diffstat (limited to 'script')
-rw-r--r--script/vm/field.lua10
1 files changed, 9 insertions, 1 deletions
diff --git a/script/vm/field.lua b/script/vm/field.lua
index b92c3a7b..db53509b 100644
--- a/script/vm/field.lua
+++ b/script/vm/field.lua
@@ -24,11 +24,19 @@ local function searchByLocalID(source, pushResult)
end
end
-local function searchByNode(source, pushResult)
+local function searchByNode(source, pushResult, mark)
+ mark = mark or {}
+ if mark[source] then
+ return
+ end
+ mark[source] = true
local uri = guide.getUri(source)
vm.compileByParentNode(source, nil, true, function (field)
searchByNodeSwitch(field.type, uri, field, pushResult)
end)
+ vm.compileByNodeChain(source, function (src)
+ searchByNode(src, pushResult, mark)
+ end)
end
---@param source parser.object