diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2017-08-27 11:59:33 +0200 |
---|---|---|
committer | Björn Linse <bjorn.linse@gmail.com> | 2017-11-24 14:50:00 +0100 |
commit | 5215e3205a07b85e4e4cf1f8a8ca6be2b9556459 (patch) | |
tree | 515ccc2d01935465edd71f1d66f526be7dc66cfc /src/nvim/eval/typval.c | |
parent | 3717e2157f2d45ce23dbe4ac03085fea2d956dc4 (diff) | |
download | rneovim-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.c | 24 |
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. |