mirror of
https://github.com/neovim/neovim.git
synced 2025-10-01 07:28:34 +00:00
channel.c:call_set_error(): fix memory leak
This commit is contained in:
@@ -868,6 +868,7 @@ static void call_set_error(Channel *channel, char *msg, int loglevel)
|
|||||||
ChannelCallFrame *frame = kv_A(channel->call_stack, i);
|
ChannelCallFrame *frame = kv_A(channel->call_stack, i);
|
||||||
frame->returned = true;
|
frame->returned = true;
|
||||||
frame->errored = true;
|
frame->errored = true;
|
||||||
|
api_free_object(frame->result);
|
||||||
frame->result = STRING_OBJ(cstr_to_string(msg));
|
frame->result = STRING_OBJ(cstr_to_string(msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -88,7 +88,12 @@ bool msgpack_rpc_to_object(const msgpack_object *const obj, Object *const arg)
|
|||||||
{
|
{
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
kvec_t(MPToAPIObjectStackItem) stack = KV_INITIAL_VALUE;
|
kvec_t(MPToAPIObjectStackItem) stack = KV_INITIAL_VALUE;
|
||||||
kv_push(stack, ((MPToAPIObjectStackItem) { obj, arg, false, 0 }));
|
kv_push(stack, ((MPToAPIObjectStackItem) {
|
||||||
|
.mobj = obj,
|
||||||
|
.aobj = arg,
|
||||||
|
.container = false,
|
||||||
|
.idx = 0,
|
||||||
|
}));
|
||||||
while (ret && kv_size(stack)) {
|
while (ret && kv_size(stack)) {
|
||||||
MPToAPIObjectStackItem cur = kv_last(stack);
|
MPToAPIObjectStackItem cur = kv_last(stack);
|
||||||
if (!cur.container) {
|
if (!cur.container) {
|
||||||
|
Reference in New Issue
Block a user