Closed paultag closed 7 years ago
Ah, this is likely a gotk bug, I'll pass that along.
Nevermind this is go-webkit2 bug. Sorry for the noise.
One possible fix may be to do:
index 3f79cc0..638db8b 100644
--- a/webkit2/gasyncreadycallback.go
+++ b/webkit2/gasyncreadycallback.go
@@ -25,6 +25,8 @@ func newGAsyncReadyCallback(f interface{}) (cCallback C.GAsyncReadyCallback, use
if rf.Kind() != reflect.Func {
return nil, nil, errors.New("f is not a function")
}
- cbinfo := &garCallback{rf}
+ data := C.malloc(C.size_t(unsafe.Sizeof(garCallback{})))
+ cbinfo := (*garCallback)(data)
+ cbinfo.f = rf
return C.GAsyncReadyCallback(C._gasyncreadycallback_call), C.gpointer(unsafe.Pointer(cbinfo)), nil
}
diff --git a/webkit2/webview.go b/webkit2/webview.go
index 8249757..5da804a 100644
--- a/webkit2/webview.go
+++ b/webkit2/webview.go
@@ -125,6 +125,7 @@ func (v *WebView) RunJavaScript(script string, resultCallback func(result *gojs.
var err error
if resultCallback != nil {
callback := func(result *C.GAsyncResult) {
+ C.free(unsafe.Pointer(userData))
var jserr *C.GError
jsResult := C.webkit_web_view_run_javascript_finish(v.webView, result, &jserr)
if jsResult == nil {
(And so forth)
Closed in #35
https://groups.google.com/forum/#!searchin/golang-nuts/cgo$20argument$20has$20Go$20pointer$20to$20Go$20pointer/golang-nuts/gnH0nhPf36I/4Shly3gxEwAJ
https://github.com/golang/go/issues/12416