From e036c851d686bd8775bfa24b8e2bfb957fb428d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net> Date: Sun, 4 Apr 2021 21:51:18 -0400 Subject: [PATCH] Fix event listener removal Was terribly broken. --- src/sbbs3/js_internal.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/sbbs3/js_internal.c b/src/sbbs3/js_internal.c index 7e47cd21d9..3c4b1720ca 100644 --- a/src/sbbs3/js_internal.c +++ b/src/sbbs3/js_internal.c @@ -928,7 +928,7 @@ js_removeEventListener(JSContext *cx, uintN argc, jsval *arglist) jsval *argv=JS_ARGV(cx, arglist); int32 id; struct js_listener_entry *listener; - struct js_listener_entry **plistener; + struct js_listener_entry **pnext; char *name; JSObject *obj=JS_THIS_OBJECT(cx, arglist); js_callback_t *cb; @@ -945,26 +945,26 @@ js_removeEventListener(JSContext *cx, uintN argc, jsval *arglist) // Remove by ID if (!JS_ValueToInt32(cx, argv[0], &id)) return JS_FALSE; - for (listener = cb->listeners, plistener = &cb->listeners; listener; listener = (*plistener)->next) { + for (listener = cb->listeners, pnext = &cb->listeners; listener; listener = (*pnext)) { if (listener->id == id) { - (*plistener)->next = listener->next; + (*pnext) = listener->next; free(listener); } else - *plistener = listener; + pnext = &listener->next; } } else { // Remove by name JSVALUE_TO_MSTRING(cx, argv[0], name, NULL); HANDLE_PENDING(cx, name); - for (listener = cb->listeners, plistener = &cb->listeners; listener; listener = (*plistener)->next) { + for (listener = cb->listeners, pnext = &cb->listeners; listener; listener = (*pnext)) { if (strcmp(listener->name, name) == 0) { - (*plistener)->next = listener->next; + (*pnext) = listener->next; free(listener); } else - *plistener = listener; + pnext = &listener->next; } free(name); } -- GitLab