aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarthin Srinavakili <karthin@karthin.com>2023-09-04 13:31:48 -0400
committerRandy Palamar <palamar@ualberta.ca>2023-10-05 05:56:18 -0600
commit3d83d7716926a7296bbb0d6bb59371a9a5d66955 (patch)
treef7d56b60eff2cdc0e549645385063cfbff808ea4
parent312a16ea59000e63db477d3adfcf8e59ea09f478 (diff)
downloadvis-3d83d7716926a7296bbb0d6bb59371a9a5d66955.tar.gz
vis-3d83d7716926a7296bbb0d6bb59371a9a5d66955.tar.xz
vis-lua: fail when mapping a key to an invalid handler type
When passing an invalid handler type (i.e., any type that isn't a string, function, or KeyAction) to Vis:map/Window:map, the editor would map the key to an empty (zeroed) KeyBinding struct. vis_keys_process() doesn't take this into account, so the key is never consumed from the input queue, causing the editor to get stuck in an infinite loop.
-rw-r--r--vis-lua.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/vis-lua.c b/vis-lua.c
index a92b186..62c0e4c 100644
--- a/vis-lua.c
+++ b/vis-lua.c
@@ -832,6 +832,8 @@ static int keymap(lua_State *L, Vis *vis, Win *win) {
goto err;
} else if (lua_isuserdata(L, 4)) {
binding->action = obj_ref_check(L, 4, VIS_LUA_TYPE_KEYACTION);
+ } else {
+ goto err;
}
if (win) {