diff options
author | Richard Musiol <mail@richard-musiol.de> | 2021-05-23 23:06:43 +0200 |
---|---|---|
committer | Richard Musiol <neelance@gmail.com> | 2021-05-24 22:12:19 +0000 |
commit | 08a8fa9c471603c7ec44895392c6bfa31a8ddcb6 (patch) | |
tree | 77da46d607e9aef80c6599a876f0309837759d8f /misc | |
parent | 32b73ae18026e8a9dc4c5aa49999b1ea445bc68c (diff) | |
download | go-08a8fa9c471603c7ec44895392c6bfa31a8ddcb6.tar.gz go-08a8fa9c471603c7ec44895392c6bfa31a8ddcb6.zip |
misc/wasm: ensure correct stack pointer in catch clauses
The stack pointer may have changed after a call from JavaScript into Go
code because of stack growth. The normal case already updated the
sp variable accordingly, but the catch case did not yet.
Fixes #45433
Change-Id: I3e0a33381929626f6b21902948935eb5ffb26c96
Reviewed-on: https://go-review.googlesource.com/c/go/+/321936
Trust: Richard Musiol <neelance@gmail.com>
Run-TryBot: Richard Musiol <neelance@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Diffstat (limited to 'misc')
-rw-r--r-- | misc/wasm/wasm_exec.js | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/misc/wasm/wasm_exec.js b/misc/wasm/wasm_exec.js index 3e41e628ef..231185a123 100644 --- a/misc/wasm/wasm_exec.js +++ b/misc/wasm/wasm_exec.js @@ -401,6 +401,7 @@ storeValue(sp + 56, result); this.mem.setUint8(sp + 64, 1); } catch (err) { + sp = this._inst.exports.getsp() >>> 0; // see comment above storeValue(sp + 56, err); this.mem.setUint8(sp + 64, 0); } @@ -417,6 +418,7 @@ storeValue(sp + 40, result); this.mem.setUint8(sp + 48, 1); } catch (err) { + sp = this._inst.exports.getsp() >>> 0; // see comment above storeValue(sp + 40, err); this.mem.setUint8(sp + 48, 0); } @@ -433,6 +435,7 @@ storeValue(sp + 40, result); this.mem.setUint8(sp + 48, 1); } catch (err) { + sp = this._inst.exports.getsp() >>> 0; // see comment above storeValue(sp + 40, err); this.mem.setUint8(sp + 48, 0); } |