]> Skullheadx's Git Forge - surf.git/commitdiff
webext: Free JavaScript objects
authorQuentin Rameau <quinq@fifth.space>
Sun, 24 Mar 2024 14:21:59 +0000 (15:21 +0100)
committerQuentin Rameau <quinq@fifth.space>
Sun, 24 Mar 2024 14:27:20 +0000 (15:27 +0100)
Webkit documentation says JavaScript objects refcount is always
increased, and has to be released always.

webext-surf.c

index 84191f30616745968086bf02ba0ad0f362e9541d..230c71b5ab8a46fa00dc56a82a489d2fe21bc12a 100644 (file)
@@ -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;
 }