diff options
author | Michael Ennen <mike.ennen@gmail.com> | 2016-12-16 15:16:55 -0700 |
---|---|---|
committer | Michael Ennen <mike.ennen@gmail.com> | 2017-02-14 17:38:18 -0700 |
commit | 8cae66b5e04467322b3dcd20d0a998d9f327efb9 (patch) | |
tree | c7d81fc181e4b00a792f1752e9143bf8f1434747 | |
parent | e2f76d190d5d7c6bf54fa1d8ee32d88d0a1169cb (diff) | |
download | rneovim-8cae66b5e04467322b3dcd20d0a998d9f327efb9.tar.gz rneovim-8cae66b5e04467322b3dcd20d0a998d9f327efb9.tar.bz2 rneovim-8cae66b5e04467322b3dcd20d0a998d9f327efb9.zip |
vim-patch:7.4.2197
Problem: All functions are freed on exit, which may hide leaks.
Solution: Only free named functions, not reference counted ones.
https://github.com/vim/vim/commit/c257487035f83aabe1c7e07f0552309e98f1bcb1
-rw-r--r-- | src/nvim/eval.c | 19 | ||||
-rw-r--r-- | src/nvim/version.c | 2 |
2 files changed, 15 insertions, 6 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 8ce9c7712a..068a1b8ed4 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -21781,11 +21781,15 @@ ufunc_T *find_func(char_u *name) void free_all_functions(void) { hashitem_T *hi; - - /* Need to start all over every time, because func_free() may change the - * hash table. */ - while (func_hashtab.ht_used > 0) - for (hi = func_hashtab.ht_array;; ++hi) + ufunc_T *fp; + uint64_t skipped = 0; + uint64_t todo; + + // Need to start all over every time, because func_free() may change the + // hash table. + while (func_hashtab.ht_used > skipped) { + todo = func_hashtab.ht_used; + for (hi = func_hashtab.ht_array; todo > 0; hi++) { if (!HASHITEM_EMPTY(hi)) { todo--; // Only free functions that are not refcounted, those are @@ -21799,6 +21803,11 @@ void free_all_functions(void) break; } } + } + } + if (skipped == 0) { + hash_clear(&func_hashtab); + } } #endif diff --git a/src/nvim/version.c b/src/nvim/version.c index 89cd61fc6e..88c54756d2 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -243,7 +243,7 @@ static int included_patches[] = { // 2200, // 2199 NA // 2198 NA - // 2197, + 2197, // 2196, // 2195 NA 2194, |