diff options
author | ZyX <kp-pav@yandex.ru> | 2016-08-28 09:15:28 +0300 |
---|---|---|
committer | ZyX <kp-pav@yandex.ru> | 2017-03-29 10:08:05 +0300 |
commit | 50ebd1dff5c4e995c4f7e7980870e43d9defabc6 (patch) | |
tree | 391ae8a9e6980f990d15f3c77d582629b840a549 /src/nvim/eval/typval.c | |
parent | 233b0c93bba66492d7b8b61f8ac61082f03668a1 (diff) | |
download | rneovim-50ebd1dff5c4e995c4f7e7980870e43d9defabc6.tar.gz rneovim-50ebd1dff5c4e995c4f7e7980870e43d9defabc6.tar.bz2 rneovim-50ebd1dff5c4e995c4f7e7980870e43d9defabc6.zip |
eval: Move free_tv to eval/typval.h, remove most of its usages
Diffstat (limited to 'src/nvim/eval/typval.c')
-rw-r--r-- | src/nvim/eval/typval.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/nvim/eval/typval.c b/src/nvim/eval/typval.c index 087e76de10..ca635dcae9 100644 --- a/src/nvim/eval/typval.c +++ b/src/nvim/eval/typval.c @@ -1742,6 +1742,46 @@ void tv_clear(typval_T *tv) } } +//{{{3 Free + +/// Free allocated VimL object and value stored inside +/// +/// @param tv Object to free. +void tv_free(typval_T *tv) +{ + if (tv != NULL) { + switch (tv->v_type) { + case VAR_PARTIAL: { + partial_unref(tv->vval.v_partial); + break; + } + case VAR_FUNC: { + func_unref(tv->vval.v_string); + // FALLTHROUGH + } + case VAR_STRING: { + xfree(tv->vval.v_string); + break; + } + case VAR_LIST: { + tv_list_unref(tv->vval.v_list); + break; + } + case VAR_DICT: { + tv_dict_unref(tv->vval.v_dict); + break; + } + case VAR_SPECIAL: + case VAR_NUMBER: + case VAR_FLOAT: + case VAR_UNKNOWN: { + break; + } + } + xfree(tv); + } +} + //{{{2 Locks /// Lock or unlock an item |