commit d5f45bffe0c3a54344f61662b4b643e168539251
Author:     Quentin Rameau <quinq@fifth.space>
AuthorDate: Sun Mar 24 15:21:59 2024 +0100
Commit:     Quentin Rameau <quinq@fifth.space>
CommitDate: Sun Mar 24 15:27:20 2024 +0100

    webext: Free JavaScript objects
    
    Webkit documentation says JavaScript objects refcount is always
    increased, and has to be released always.

diff --git a/webext-surf.c b/webext-surf.c
index 84191f3..230c71b 100644
--- 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;
 }
 

Reply via email to