aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api/private
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2024-02-20 13:44:50 +0100
committerbfredl <bjorn.linse@gmail.com>2024-02-21 11:58:28 +0100
commit3cc54586be7760652e8bad88cae82ce74ef9432e (patch)
treed39cab2ecf5fb8f8bfc44ecf40c6fb2efb13a241 /src/nvim/api/private
parent9bb046d1be5aa9ba0482b2cad050b286d4b78978 (diff)
downloadrneovim-3cc54586be7760652e8bad88cae82ce74ef9432e.tar.gz
rneovim-3cc54586be7760652e8bad88cae82ce74ef9432e.tar.bz2
rneovim-3cc54586be7760652e8bad88cae82ce74ef9432e.zip
refactor(api): make freeing of return-value opt-in instead of opt out
As only a few API functions make use of explicit freeing of the return value, make it opt-in instead. The arena is always present under the hood, so `Arena *arena` arg now doesn't mean anything other than getting access to this arena. Also it is in principle possible to return an allocated value while still using the arena as scratch space for other stuff (unlikely, but there no reason to not allow it).
Diffstat (limited to 'src/nvim/api/private')
-rw-r--r--src/nvim/api/private/dispatch.h4
-rw-r--r--src/nvim/api/private/helpers.h7
2 files changed, 2 insertions, 9 deletions
diff --git a/src/nvim/api/private/dispatch.h b/src/nvim/api/private/dispatch.h
index 6d051176ac..288f368fba 100644
--- a/src/nvim/api/private/dispatch.h
+++ b/src/nvim/api/private/dispatch.h
@@ -18,8 +18,8 @@ struct MsgpackRpcRequestHandler {
///< uv loop (the loop is run very frequently due to breakcheck).
///< If "fast" is false, the function is deferred, i e the call will
///< be put in the event queue, for safe handling later.
- bool arena_return; ///< return value is allocated in the arena (or statically)
- ///< and should not be freed as such.
+ bool ret_alloc; ///< return value is allocated and should be freed using api_free_object
+ ///< otherwise it uses arena and/or static memory
};
extern const MsgpackRpcRequestHandler method_handlers[];
diff --git a/src/nvim/api/private/helpers.h b/src/nvim/api/private/helpers.h
index 20bc889a0a..7eda8ffaf6 100644
--- a/src/nvim/api/private/helpers.h
+++ b/src/nvim/api/private/helpers.h
@@ -125,13 +125,6 @@ typedef kvec_withinit_t(Object, 16) ArrayBuilder;
#define KEYDICT_INIT { 0 }
-#define api_free_boolean(value)
-#define api_free_integer(value)
-#define api_free_float(value)
-#define api_free_buffer(value)
-#define api_free_window(value)
-#define api_free_tabpage(value)
-
EXTERN PMap(int) buffer_handles INIT( = MAP_INIT);
EXTERN PMap(int) window_handles INIT( = MAP_INIT);
EXTERN PMap(int) tabpage_handles INIT( = MAP_INIT);