aboutsummaryrefslogtreecommitdiff
path: root/src/syscall
diff options
context:
space:
mode:
authorRichard Musiol <mail@richard-musiol.de>2020-03-01 17:01:58 +0100
committerRichard Musiol <neelance@gmail.com>2020-03-01 21:02:40 +0000
commite44cda3aa97ba0870806e65fc66641eb2cf6682a (patch)
tree2dcb7c82cd2e46c5df8b88a06c530f2cfa94e1cd /src/syscall
parent7913f7dfcf2c281b99c6ddd278aa851de47ada9d (diff)
downloadgo-e44cda3aa97ba0870806e65fc66641eb2cf6682a.tar.xz
syscall: fix Fchdir on js/wasm
NodeJS does not support fchdir so it has to be emulated with chdir by saving the path when opening a directory. However, if the path opened is relative, saving this path is not sufficient, because after changing the working directory the path does not resolve correctly any more, thus a subsequent fd.Chdir() fails. This change fixes the issue by resolving a relative path when opening the directory and saving the absolute path instead. Fixes #37448 Change-Id: Id6bc8c4232b0019fc11e850599a526336608ce54 Reviewed-on: https://go-review.googlesource.com/c/go/+/221717 Run-TryBot: Richard Musiol <neelance@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Diffstat (limited to 'src/syscall')
-rw-r--r--src/syscall/fs_js.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/syscall/fs_js.go b/src/syscall/fs_js.go
index c1cac97d91..262ec28afd 100644
--- a/src/syscall/fs_js.go
+++ b/src/syscall/fs_js.go
@@ -102,6 +102,10 @@ func Open(path string, openmode int, perm uint32) (int, error) {
}
}
+ if path[0] != '/' {
+ cwd := jsProcess.Call("cwd").String()
+ path = cwd + "/" + path
+ }
f := &jsFile{
path: path,
entries: entries,