diff options
| author | Karthin Srinavakili <karthin@karthin.com> | 2023-09-04 13:31:48 -0400 |
|---|---|---|
| committer | Randy Palamar <palamar@ualberta.ca> | 2023-10-05 05:56:18 -0600 |
| commit | 3d83d7716926a7296bbb0d6bb59371a9a5d66955 (patch) | |
| tree | f7d56b60eff2cdc0e549645385063cfbff808ea4 | |
| parent | 312a16ea59000e63db477d3adfcf8e59ea09f478 (diff) | |
| download | vis-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.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -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) { |
