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.
This commit is contained in:
Avi Halachmi (:avih) 2021-12-26 19:48:38 +02:00
parent d92cf77be5
commit 5c5e35c1bc
1 changed files with 3 additions and 3 deletions

View File

@ -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;
}