From: Hajime Hoshi Date: Sun, 2 Feb 2020 05:55:29 +0000 (+0900) Subject: syscall: release a js.Func object in fsCall X-Git-Tag: go1.15beta1~1129 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=35b80575b8dbeb031455ccd99a08850c1d9f33b1;p=gostls13.git syscall: release a js.Func object in fsCall (This is a reland of golang.org/cl/217417.) A js.Func object in fsCall was created for each call but never released. This CL fixes this. Change-Id: Ifc0efb997c9b3e04641839691ccc04de61ef28d6 Reviewed-on: https://go-review.googlesource.com/c/go/+/220537 Run-TryBot: Hajime Hoshi TryBot-Result: Gobot Gobot Reviewed-by: Dmitri Shuralyov --- diff --git a/src/syscall/fs_js.go b/src/syscall/fs_js.go index 16d9f58b8c..c1cac97d91 100644 --- a/src/syscall/fs_js.go +++ b/src/syscall/fs_js.go @@ -495,7 +495,7 @@ func fsCall(name string, args ...interface{}) (js.Value, error) { } c := make(chan callResult, 1) - jsFS.Call(name, append(args, js.FuncOf(func(this js.Value, args []js.Value) interface{} { + f := js.FuncOf(func(this js.Value, args []js.Value) interface{} { var res callResult if len(args) >= 1 { // on Node.js 8, fs.utimes calls the callback without any arguments @@ -511,7 +511,9 @@ func fsCall(name string, args ...interface{}) (js.Value, error) { c <- res return nil - }))...) + }) + defer f.Release() + jsFS.Call(name, append(args, f)...) res := <-c return res.val, res.err }