promise add missing ref and remove syncOnce

This commit is contained in:
RSWilli
2024-08-22 17:38:55 +02:00
parent 9ced43ae83
commit 1f659f1f14
2 changed files with 9 additions and 11 deletions

View File

@@ -198,5 +198,11 @@ func marshalPromise(p unsafe.Pointer) (interface{}, error) {
done: nil, // cannot be awaited if received from FFI done: nil, // cannot be awaited if received from FFI
} }
prom.Ref()
runtime.SetFinalizer(prom, func(p *Promise) {
p.Unref()
})
return prom, nil return prom, nil
} }

View File

@@ -4,10 +4,8 @@ import (
"context" "context"
"errors" "errors"
"runtime" "runtime"
"sync"
"testing" "testing"
"time" "time"
"unsafe"
) )
//go:noinline //go:noinline
@@ -35,9 +33,7 @@ func awaitGC() {
} }
func TestPromise(t *testing.T) { func TestPromise(t *testing.T) {
initOnce.Do(func() {
Init(nil) Init(nil)
})
prom := NewPromise() prom := NewPromise()
cprom := prom.Instance() cprom := prom.Instance()
@@ -87,12 +83,8 @@ func TestPromise(t *testing.T) {
awaitGC() awaitGC()
} }
var initOnce sync.Once
func TestPromiseMarshal(t *testing.T) { func TestPromiseMarshal(t *testing.T) {
initOnce.Do(func() {
Init(nil) Init(nil)
})
prom := NewPromise() prom := NewPromise()
@@ -102,7 +94,7 @@ func TestPromiseMarshal(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
receivedPromI, err := marshalPromise(unsafe.Pointer(gv.GValue)) receivedPromI, err := gv.GoValue()
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)