From 4bac5e9ce19afd4647ee4d313c9485229d05a334 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Mon, 26 May 2014 13:39:05 -0300 Subject: API: Refactor: Duplicate/free string arguments coming from msgpack When receiving strings *from* msgpack, we don't need to duplicate/free since the data only lives in the msgpack parse buffer until the end of the call. But in order to reuse `msgpack_rpc_free_object` when sending event data(which is sent *to* msgpack), Strings must be freed, which means they must also be allocated separately. --- src/nvim/api/buffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/nvim/api/buffer.c') diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c index bf30ccf856..ef2f9e9d0e 100644 --- a/src/nvim/api/buffer.c +++ b/src/nvim/api/buffer.c @@ -307,7 +307,7 @@ Integer buffer_get_number(Buffer buffer, Error *err) String buffer_get_name(Buffer buffer, Error *err) { - String rv = {.size = 0, .data = ""}; + String rv = STRING_INIT; buf_T *buf = find_buffer(buffer, err); if (!buf || buf->b_ffname == NULL) { -- cgit From 807f940aa499fb1a33a4b1d066204ff58f25e075 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Mon, 26 May 2014 13:39:21 -0300 Subject: API: Bugfix: Remove memory leak from buffer_set_slice --- src/nvim/api/buffer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/nvim/api/buffer.c') diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c index ef2f9e9d0e..c8a8240fee 100644 --- a/src/nvim/api/buffer.c +++ b/src/nvim/api/buffer.c @@ -217,7 +217,8 @@ void buffer_set_slice(Buffer buffer, goto end; } - // Same as with replacing + // Same as with replacing, but we also need to free lines + free(lines[i]); lines[i] = NULL; extra++; } -- cgit From 327347e3b47704f25e9a8d7d617d4f91fb128d43 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Mon, 26 May 2014 13:39:23 -0300 Subject: API: Bugfix: Remove memory leak from buffer_set_name --- src/nvim/api/buffer.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/nvim/api/buffer.c') diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c index c8a8240fee..33ddacce69 100644 --- a/src/nvim/api/buffer.c +++ b/src/nvim/api/buffer.c @@ -334,6 +334,7 @@ void buffer_set_name(Buffer buffer, String name, Error *err) // Using aucmd_*: autocommands will be executed by rename_buffer aucmd_prepbuf(&aco, buf); ren_ret = rename_buffer((char_u *)val); + free(val); aucmd_restbuf(&aco); if (try_end(err)) { -- cgit From cbf9564ee01535e3a2168219ef8f84f857519da3 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Mon, 26 May 2014 13:39:25 -0300 Subject: API: Bugfix: Remove memory leak from buffer_get_line --- src/nvim/api/buffer.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/nvim/api/buffer.c') diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c index 33ddacce69..4721045048 100644 --- a/src/nvim/api/buffer.c +++ b/src/nvim/api/buffer.c @@ -60,6 +60,8 @@ String buffer_get_line(Buffer buffer, Integer index, Error *err) rv = slice.items[0]; } + free(slice.items); + return rv; } -- cgit