aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/typval.c
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2017-08-27 11:59:33 +0200
committerBjörn Linse <bjorn.linse@gmail.com>2017-11-24 14:50:00 +0100
commit5215e3205a07b85e4e4cf1f8a8ca6be2b9556459 (patch)
tree515ccc2d01935465edd71f1d66f526be7dc66cfc /src/nvim/eval/typval.c
parent3717e2157f2d45ce23dbe4ac03085fea2d956dc4 (diff)
downloadrneovim-5215e3205a07b85e4e4cf1f8a8ca6be2b9556459.tar.gz
rneovim-5215e3205a07b85e4e4cf1f8a8ca6be2b9556459.tar.bz2
rneovim-5215e3205a07b85e4e4cf1f8a8ca6be2b9556459.zip
channels: refactor
Diffstat (limited to 'src/nvim/eval/typval.c')
-rw-r--r--src/nvim/eval/typval.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/nvim/eval/typval.c b/src/nvim/eval/typval.c
index 262ea922ef..99382d2a24 100644
--- a/src/nvim/eval/typval.c
+++ b/src/nvim/eval/typval.c
@@ -847,6 +847,30 @@ bool tv_callback_equal(const Callback *const cb1, const Callback *const cb2)
return false;
}
+/// Unref/free callback
+void callback_free(Callback *const callback)
+ FUNC_ATTR_NONNULL_ALL
+{
+ switch (callback->type) {
+ case kCallbackFuncref: {
+ func_unref(callback->data.funcref);
+ xfree(callback->data.funcref);
+ break;
+ }
+ case kCallbackPartial: {
+ partial_unref(callback->data.partial);
+ break;
+ }
+ case kCallbackNone: {
+ break;
+ }
+ default: {
+ abort();
+ }
+ }
+ callback->type = kCallbackNone;
+}
+
/// Remove watcher from a dictionary
///
/// @param dict Dictionary to remove watcher from.