diff options
author | Andrew Willette <willette.andrew1846@gmail.com> | 2022-11-30 14:32:57 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-30 21:32:57 +0100 |
commit | 282dda643ae598d5c8e9f34c379d931563b4891b (patch) | |
tree | 251473efe87eac9f2639de56f1afb82f2dda2ea5 | |
parent | ef5ab2bf76a8037c3ca87c08d4083e03686fd7a1 (diff) | |
download | rneovim-282dda643ae598d5c8e9f34c379d931563b4891b.tar.gz rneovim-282dda643ae598d5c8e9f34c379d931563b4891b.tar.bz2 rneovim-282dda643ae598d5c8e9f34c379d931563b4891b.zip |
fix(ui-ext): log and clear error in ui_comp_event (#21147)
* fix: log and clear error in ui_comp_event
* fix: handling error in each map_foreach_value iteration
* fix: handling error decl in for_each loop
* fix: updating initerr to const, removing initerr free-ing
* fix: using ERROR_SET for error check
* fix: wrapping ERROR_INIT in parens to allow for including inside macro
-rw-r--r-- | src/nvim/api/private/defs.h | 2 | ||||
-rw-r--r-- | src/nvim/msgpack_rpc/unpacker.c | 2 | ||||
-rw-r--r-- | src/nvim/ui_compositor.c | 7 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/nvim/api/private/defs.h b/src/nvim/api/private/defs.h index 8693751c97..8acbf0d9de 100644 --- a/src/nvim/api/private/defs.h +++ b/src/nvim/api/private/defs.h @@ -12,7 +12,7 @@ #define ARRAY_DICT_INIT KV_INITIAL_VALUE #define STRING_INIT { .data = NULL, .size = 0 } #define OBJECT_INIT { .type = kObjectTypeNil } -#define ERROR_INIT { .type = kErrorTypeNone, .msg = NULL } +#define ERROR_INIT ((Error) { .type = kErrorTypeNone, .msg = NULL }) #define REMOTE_TYPE(type) typedef handle_T type #define ERROR_SET(e) ((e)->type != kErrorTypeNone) diff --git a/src/nvim/msgpack_rpc/unpacker.c b/src/nvim/msgpack_rpc/unpacker.c index c082bba660..897ea1f768 100644 --- a/src/nvim/msgpack_rpc/unpacker.c +++ b/src/nvim/msgpack_rpc/unpacker.c @@ -186,7 +186,7 @@ void unpacker_init(Unpacker *p) mpack_parser_init(&p->parser, 0); p->parser.data.p = p; mpack_tokbuf_init(&p->reader); - p->unpack_error = (Error)ERROR_INIT; + p->unpack_error = ERROR_INIT; p->arena = (Arena)ARENA_EMPTY; } diff --git a/src/nvim/ui_compositor.c b/src/nvim/ui_compositor.c index 32bdb7d273..26a17ef747 100644 --- a/src/nvim/ui_compositor.c +++ b/src/nvim/ui_compositor.c @@ -706,15 +706,18 @@ static void ui_comp_grid_resize(UI *ui, Integer grid, Integer width, Integer hei static void ui_comp_event(UI *ui, char *name, Array args) { - Error err = ERROR_INIT; UIEventCallback *event_cb; bool handled = false; - map_foreach_value(&ui_event_cbs, event_cb, { + Error err = ERROR_INIT; Object res = nlua_call_ref(event_cb->cb, name, args, false, &err); if (res.type == kObjectTypeBoolean && res.data.boolean == true) { handled = true; } + if (ERROR_SET(&err)) { + ELOG("Error while executing ui_comp_event callback: %s", err.msg); + } + api_clear_error(&err); }) if (!handled) { |