neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit bb7033a0338e9133765f9b2e1e6dc096847d17e3
parent fc2cd28547954e64ef429c83733f06fa3ee75d50
Author: bfredl <bjorn.linse@gmail.com>
Date:   Mon,  9 Jan 2023 13:26:18 +0100

fix(rpc): don't free args on error in rpc_send_event

fixup #21631
fixes #21690

Diffstat:
Msrc/nvim/eval/funcs.c | 4++--
Msrc/nvim/msgpack_rpc/channel.c | 1-
2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c @@ -6325,12 +6325,12 @@ static void f_rpcnotify(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) bool ok = rpc_send_event((uint64_t)argvars[0].vval.v_number, tv_get_string(&argvars[1]), args); + api_free_array(args); + if (!ok) { semsg(_(e_invarg2), "Channel doesn't exist"); return; } - - api_free_array(args); rettv->vval.v_number = 1; } diff --git a/src/nvim/msgpack_rpc/channel.c b/src/nvim/msgpack_rpc/channel.c @@ -100,7 +100,6 @@ bool rpc_send_event(uint64_t id, const char *name, Array args) Channel *channel = NULL; if (id && (!(channel = find_rpc_channel(id)))) { - api_free_array(args); return false; }