From 5c5e35c1bcf9ccfa471dc590caf0c25ee158ca03 Mon Sep 17 00:00:00 2001 From: "Avi Halachmi (:avih)" Date: Sun, 26 Dec 2021 19:48:38 +0200 Subject: js: fix event registration (keys, script-message, more) Commit 63205981 removed some events but left all other event IDs at their original values, which created "holes" at the events IDs array. The JS backend for mp.register_event maps a name to an ID by scanning all IDs and stopping when the name was found or a NULL name was returned. Lua does the same except that it doesn't stop on NULL name. Previously it was not possible to have a NULL name before the end of the array, but now it is possible due to the enumeration holes. Fix by skipping missing names, like lua does. --- player/javascript.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'player') diff --git a/player/javascript.c b/player/javascript.c index 50a1550690..d4191c582b 100644 --- a/player/javascript.c +++ b/player/javascript.c @@ -610,9 +610,9 @@ static void script__request_event(js_State *J) const char *event = js_tostring(J, 1); bool enable = js_toboolean(J, 2); - const char *name; - for (int n = 0; n < 256 && (name = mpv_event_name(n)); n++) { - if (strcmp(name, event) == 0) { + for (int n = 0; n < 256; n++) { + const char *name = mpv_event_name(n); + if (name && strcmp(name, event) == 0) { push_status(J, mpv_request_event(jclient(J), n, enable)); return; } -- cgit v1.2.3