]> Cypherpunks repositories - gostls13.git/commitdiff
syscall,misc/wasm: fix path expansion on non-unix platforms
authorZxilly <zxilly@outlook.com>
Fri, 9 Aug 2024 17:43:11 +0000 (17:43 +0000)
committerJohan Brandhorst-Satzkorn <johan.brandhorst@gmail.com>
Fri, 9 Aug 2024 21:22:25 +0000 (21:22 +0000)
When running a go binary compiled to wasm using node.js on a Windows platform,
the absolute path passed in is also incorrectly forced to expand.

For example:

E:\Project\CS_Project\gsv\testdata\result.gob.gz

will results to

open C:\Users\zxilly\AppData\Local\wasm-exec\go1.23rc1\E:\Project\CS_Project\gsv\testdata\result.gob.gz: No such file or directory

C:\Users\zxilly\AppData\Local\wasm-exec\go1.23rc1 is the place of
wasm_exec_node.js

Fixes: #68820
Change-Id: Ic30c6242302f8915ac1b8ea9f24546935cbb791e
GitHub-Last-Rev: f35ff1a2eef86c3b6431bb2be75448c3ac553f1b
GitHub-Pull-Request: golang/go#68255
Reviewed-on: https://go-review.googlesource.com/c/go/+/595797
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Johan Brandhorst-Satzkorn <johan.brandhorst@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Johan Brandhorst-Satzkorn <johan.brandhorst@gmail.com>

misc/wasm/wasm_exec.js
misc/wasm/wasm_exec_node.js
src/syscall/fs_js.go

index bc6f210242824c25b5ee619afa507767b6e587be..0f635d6d540717a4ddeb12e55533cb7c3084812d 100644 (file)
                }
        }
 
+       if (!globalThis.path) {
+               globalThis.path = {
+                       resolve(...pathSegments) {
+                               return pathSegments.join("/");
+                       }
+               }
+       }
+
        if (!globalThis.crypto) {
                throw new Error("globalThis.crypto is not available, polyfill required (crypto.getRandomValues only)");
        }
index 986069087bc0bce0beddeb3fb19ebb2b42cf4fdb..dd65b19867dcf4dc98931e6ba8ba5f595f95fe62 100644 (file)
@@ -11,6 +11,7 @@ if (process.argv.length < 3) {
 
 globalThis.require = require;
 globalThis.fs = require("fs");
+globalThis.path = require("path");
 globalThis.TextEncoder = require("util").TextEncoder;
 globalThis.TextDecoder = require("util").TextDecoder;
 
index 793b9a2d41c38e337759fdeccc161f1a4fd2e379..b6138ebeb1ed530c7d32bb902e9fef4a04b8304a 100644 (file)
@@ -16,6 +16,7 @@ import (
 func now() (sec int64, nsec int32)
 
 var jsProcess = js.Global().Get("process")
+var jsPath = js.Global().Get("path")
 var jsFS = js.Global().Get("fs")
 var constants = jsFS.Get("constants")
 
@@ -101,10 +102,8 @@ func Open(path string, openmode int, perm uint32) (int, error) {
                }
        }
 
-       if path[0] != '/' {
-               cwd := jsProcess.Call("cwd").String()
-               path = cwd + "/" + path
-       }
+       path = jsPath.Call("resolve", path).String()
+
        f := &jsFile{
                path:    path,
                entries: entries,