aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/msgpack_rpc
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-12-02 07:55:44 +0800
committerGitHub <noreply@github.com>2023-12-02 07:55:44 +0800
commitf6e5366d0077e9f171651f37282cb5c47629d1b6 (patch)
treefb7f29ea11c7c122f3e4404c9473b8fff1dc5eaf /src/nvim/msgpack_rpc
parent983defd284f5941c870d7868cdb60587a98ab348 (diff)
downloadrneovim-f6e5366d0077e9f171651f37282cb5c47629d1b6.tar.gz
rneovim-f6e5366d0077e9f171651f37282cb5c47629d1b6.tar.bz2
rneovim-f6e5366d0077e9f171651f37282cb5c47629d1b6.zip
refactor: free more reachable memory with EXITFREE (#26349)
Discovered using __sanitizer_print_memory_profile().
Diffstat (limited to 'src/nvim/msgpack_rpc')
-rw-r--r--src/nvim/msgpack_rpc/channel.c5
-rw-r--r--src/nvim/msgpack_rpc/helpers.c8
2 files changed, 13 insertions, 0 deletions
diff --git a/src/nvim/msgpack_rpc/channel.c b/src/nvim/msgpack_rpc/channel.c
index acc21bbf7e..2336853609 100644
--- a/src/nvim/msgpack_rpc/channel.c
+++ b/src/nvim/msgpack_rpc/channel.c
@@ -751,6 +751,7 @@ const char *get_client_info(Channel *chan, const char *key)
return NULL;
}
+#ifdef EXITFREE
void rpc_free_all_mem(void)
{
cstr_t key;
@@ -758,4 +759,8 @@ void rpc_free_all_mem(void)
xfree((void *)key);
});
set_destroy(cstr_t, &event_strings);
+
+ msgpack_sbuffer_destroy(&out_buffer);
+ multiqueue_free(ch_before_blocking_events);
}
+#endif
diff --git a/src/nvim/msgpack_rpc/helpers.c b/src/nvim/msgpack_rpc/helpers.c
index d2be321e7a..3162269df6 100644
--- a/src/nvim/msgpack_rpc/helpers.c
+++ b/src/nvim/msgpack_rpc/helpers.c
@@ -27,6 +27,14 @@ void msgpack_rpc_helpers_init(void)
msgpack_sbuffer_init(&sbuffer);
}
+#ifdef EXITFREE
+void msgpack_rpc_helpers_free_all_mem(void)
+{
+ msgpack_zone_destroy(&zone);
+ msgpack_sbuffer_destroy(&sbuffer);
+}
+#endif
+
typedef struct {
const msgpack_object *mobj;
Object *aobj;