From 48ac06506ba64f21e59e0120ca87759ddb85efd0 Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Wed, 28 May 2014 08:42:03 -0300 Subject: API: Bugfix: Remove possible double-free in buffer_get_line --- src/nvim/api/buffer.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/nvim/api') diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c index 4721045048..d2b4cafaac 100644 --- a/src/nvim/api/buffer.c +++ b/src/nvim/api/buffer.c @@ -121,6 +121,7 @@ end: } free(rv.items); + rv.items = NULL; } return rv; -- cgit From c3c826da34be63543f3bf54f31c2ff38bfcd715a Mon Sep 17 00:00:00 2001 From: Thiago de Arruda Date: Wed, 28 May 2014 08:42:10 -0300 Subject: API: Events: Add functions for {un}subscribing to broadcasted events --- src/nvim/api/vim.c | 19 +++++++++++++++++++ src/nvim/api/vim.h | 12 ++++++++++++ 2 files changed, 31 insertions(+) (limited to 'src/nvim/api') diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index 694781e0a3..39e2c32d6d 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -7,6 +7,7 @@ #include "nvim/api/private/helpers.h" #include "nvim/api/private/defs.h" #include "nvim/api/buffer.h" +#include "nvim/os/channel.h" #include "nvim/vim.h" #include "nvim/buffer.h" #include "nvim/window.h" @@ -327,6 +328,24 @@ void vim_set_current_tabpage(Tabpage tabpage, Error *err) try_end(err); } +void vim_subscribe(uint64_t channel_id, String event) +{ + size_t length = (event.size < EVENT_MAXLEN ? event.size : EVENT_MAXLEN); + char e[EVENT_MAXLEN + 1]; + memcpy(e, event.data, length); + e[length] = NUL; + channel_subscribe(channel_id, e); +} + +void vim_unsubscribe(uint64_t channel_id, String event) +{ + size_t length = (event.size < EVENT_MAXLEN ? event.size : EVENT_MAXLEN); + char e[EVENT_MAXLEN + 1]; + memcpy(e, event.data, length); + e[length] = NUL; + channel_unsubscribe(channel_id, e); +} + static void write_msg(String message, bool to_err) { static int pos = 0; diff --git a/src/nvim/api/vim.h b/src/nvim/api/vim.h index acfab11cf7..4d1ac9023e 100644 --- a/src/nvim/api/vim.h +++ b/src/nvim/api/vim.h @@ -155,5 +155,17 @@ Tabpage vim_get_current_tabpage(void); /// @param[out] err Details of an error that may have occurred void vim_set_current_tabpage(Tabpage tabpage, Error *err); +/// Subscribes to event broadcasts +/// +/// @param channel_id The channel id(passed automatically by the dispatcher) +/// @param event The event type string +void vim_subscribe(uint64_t channel_id, String event); + +/// Unsubscribes to event broadcasts +/// +/// @param channel_id The channel id(passed automatically by the dispatcher) +/// @param event The event type string +void vim_unsubscribe(uint64_t channel_id, String event); + #endif // NVIM_API_VIM_H -- cgit