summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-11-04 00:45:06 +0800
committerruki <[email protected]>2025-11-07 15:01:56 +0800
commit70624314ebcdedbd5e2dd5e51542a33d38f182bc (patch)
treef611a7350a26d7e1ddf53ef3f4a88be6e9eb57ea
parent7fc086de45783207a760e16b6b2b6a7f2e56a915 (diff)
limit os.cd
-rw-r--r--xmake/core/base/os.lua3
-rw-r--r--xmake/core/main.lua2
2 files changed, 4 insertions, 1 deletions
diff --git a/xmake/core/base/os.lua b/xmake/core/base/os.lua
index 94cde85e7..eb9ab6d31 100644
--- a/xmake/core/base/os.lua
+++ b/xmake/core/base/os.lua
@@ -637,6 +637,9 @@ end
function os.cd(dir)
assert(dir)
+ -- we can only change directory in main thread
+ assert(xmake.in_main_thread())
+
-- support path instance
dir = tostring(dir)
diff --git a/xmake/core/main.lua b/xmake/core/main.lua
index 3f0a4484f..cfde482fb 100644
--- a/xmake/core/main.lua
+++ b/xmake/core/main.lua
@@ -218,7 +218,7 @@ function main._init()
xmake._PROJECT_FILE = projectfile
-- enter the project directory
- if os.isdir(os.projectdir()) then
+ if os.isdir(os.projectdir()) and xmake.in_main_thread() then
os.cd(os.projectdir())
end
else