webext: Free JavaScript objects - surf - surf browser, a WebKit based browser
 (HTM) git clone git://git.suckless.org/surf
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit d5f45bffe0c3a54344f61662b4b643e168539251
 (DIR) parent b48be75179e5e2839b60f713111a1789b868cede
 (HTM) Author: Quentin Rameau <quinq@fifth.space>
       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(-)
       ---
 (DIR) 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;
        }