From bb1f08f6e8a017c4a1361ed838b0a54e742385c2 Mon Sep 17 00:00:00 2001 From: oni-link Date: Wed, 23 Jul 2014 13:40:19 +0200 Subject: Fix memory leak in provider_call. If no channel can be found for a method, free argument arg before returning. --- src/nvim/os/provider.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/nvim/os/provider.c b/src/nvim/os/provider.c index 2e42cbb8f2..99cc078e94 100644 --- a/src/nvim/os/provider.c +++ b/src/nvim/os/provider.c @@ -109,6 +109,7 @@ Object provider_call(char *method, Object arg) "Provider for \"%s\" is not available", method); report_error(buf); + msgpack_rpc_free_object(arg); return NIL; } -- cgit From e9e4cdb3d4d0709a7b7cff5a0ebc30b70c05fd6b Mon Sep 17 00:00:00 2001 From: oni-link Date: Wed, 23 Jul 2014 13:52:15 +0200 Subject: Fix memory leaks for jobs. Free the data memory of process and pipe handles in the close callback for a job. --- src/nvim/os/job.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/nvim/os/job.c b/src/nvim/os/job.c index 203aa2c990..5c45c3727e 100644 --- a/src/nvim/os/job.c +++ b/src/nvim/os/job.c @@ -402,6 +402,14 @@ static void close_cb(uv_handle_t *handle) rstream_free(job->out); rstream_free(job->err); wstream_free(job->in); + + // Free data memory of process and pipe handles, that was allocated + // by handle_set_job in job_start. + free(job->proc.data); + free(job->proc_stdin.data); + free(job->proc_stdout.data); + free(job->proc_stderr.data); + shell_free_argv(job->proc_opts.args); free(job); } -- cgit