summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xmake/core/sandbox/modules/import/lib/detect/find_path.lua13
1 files changed, 12 insertions, 1 deletions
diff --git a/xmake/core/sandbox/modules/import/lib/detect/find_path.lua b/xmake/core/sandbox/modules/import/lib/detect/find_path.lua
index d881d1072..98edd8aa4 100644
--- a/xmake/core/sandbox/modules/import/lib/detect/find_path.lua
+++ b/xmake/core/sandbox/modules/import/lib/detect/find_path.lua
@@ -37,7 +37,18 @@ function sandbox_lib_detect_find_path._find(filedir, name)
local filepath = results[1]
if filepath then
-- we need translate name first, https://github.com/xmake-io/xmake-repo/issues/1315
- local p = filepath:find(path.pattern(path.translate(name)))
+ local to_search = path.pattern(path.translate(name))
+
+ -- need to find the last occurrence of substring to_search within filepath
+ local last_index = 0
+ local idx = 0
+ while true do
+ idx = filepath:find(to_search, idx+1)
+ if idx == nil then break end
+ last_index = idx
+ end
+
+ local p = filepath:find(to_search, last_index)
if p then
filepath = path.translate(filepath:sub(1, p - 1))
if os.isdir(filepath) then