diff options
author | ZyX <kp-pav@yandex.ru> | 2015-08-16 20:09:51 +0300 |
---|---|---|
committer | ZyX <kp-pav@yandex.ru> | 2015-10-08 22:00:47 +0300 |
commit | 2ba138b2f9c060c98af952e6956e48ad1521b0c9 (patch) | |
tree | 4d9b17f2626d72677f742d6f436823eb50373e4d /src/nvim/eval.c | |
parent | 22906265a2647aadcbc3ab9ab8a590bffd95002c (diff) | |
download | rneovim-2ba138b2f9c060c98af952e6956e48ad1521b0c9.tar.gz rneovim-2ba138b2f9c060c98af952e6956e48ad1521b0c9.tar.bz2 rneovim-2ba138b2f9c060c98af952e6956e48ad1521b0c9.zip |
*: Fix problems with clang+asan Release build
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 84721feade..338ee9dfed 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -5604,14 +5604,27 @@ bool garbage_collect(void) const void *reg_iter = NULL; do { yankreg_T reg; - char name; + char name = NUL; reg_iter = op_register_iter(reg_iter, &name, ®); - if (reg.y_array != NULL) { + if (name != NUL) { ABORTING(set_ref_dict)(reg.additional_data, copyID); } } while (reg_iter != NULL); } + // global marks (ShaDa additional data) + { + const void *mark_iter = NULL; + do { + xfmark_T fm; + char name = NUL; + mark_iter = mark_global_iter(mark_iter, &name, &fm); + if (name != NUL) { + ABORTING(set_ref_dict)(fm.fmark.additional_data, copyID); + } + } while (mark_iter != NULL); + } + // tabpage-local variables FOR_ALL_TABS(tp) { ABORTING(set_ref_in_item)(&tp->tp_winvar.di_tv, copyID, NULL, NULL); @@ -20882,7 +20895,7 @@ static var_flavour_T var_flavour(char_u *varname) /// or NULL to indicate that iteration is over. const void *var_shada_iter(const void *const iter, const char **const name, typval_T *rettv) - FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ARG(2, 3) + FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ARG(2, 3) { const hashitem_T *hi; const hashitem_T *hifirst = globvarht.ht_array; |