webext: Free JavaScript objects - surf - surf browser, a WebKit based browser | |
git clone git://git.suckless.org/surf | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit d5f45bffe0c3a54344f61662b4b643e168539251 | |
parent b48be75179e5e2839b60f713111a1789b868cede | |
Author: Quentin Rameau <[email protected]> | |
Date: Sun, 24 Mar 2024 15:21:59 +0100 | |
webext: Free JavaScript objects | |
Webkit documentation says JavaScript objects refcount is always | |
increased, and has to be released always. | |
Diffstat: | |
M webext-surf.c | 10 ++++++++-- | |
1 file changed, 8 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/webext-surf.c b/webext-surf.c | |
@@ -25,6 +25,7 @@ readsock(GIOChannel *s, GIOCondition c, gpointer unused) | |
static char js[48], msg[MSGBUFSZ]; | |
WebKitWebPage *page; | |
JSCContext *jsc; | |
+ JSCValue *jsv; | |
GError *gerr = NULL; | |
gsize msgsz; | |
@@ -48,6 +49,7 @@ readsock(GIOChannel *s, GIOCondition c, gpointer unused) | |
return TRUE; | |
jsc = webkit_frame_get_js_context(webkit_web_page_get_main_frame(page)… | |
+ jsv = NULL; | |
switch (msg[1]) { | |
case 'h': | |
@@ -56,7 +58,7 @@ readsock(GIOChannel *s, GIOCondition c, gpointer unused) | |
snprintf(js, sizeof(js), | |
"window.scrollBy(window.innerWidth/100*%hhd,0);", | |
msg[2]); | |
- jsc_context_evaluate(jsc, js, -1); | |
+ jsv = jsc_context_evaluate(jsc, js, -1); | |
break; | |
case 'v': | |
if (msgsz != 3) | |
@@ -64,10 +66,14 @@ readsock(GIOChannel *s, GIOCondition c, gpointer unused) | |
snprintf(js, sizeof(js), | |
"window.scrollBy(0,window.innerHeight/100*%hhd);", | |
msg[2]); | |
- jsc_context_evaluate(jsc, js, -1); | |
+ jsv = jsc_context_evaluate(jsc, js, -1); | |
break; | |
} | |
+ g_object_unref(jsc); | |
+ if (jsv) | |
+ g_object_unref(jsv); | |
+ | |
return TRUE; | |
} | |