aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2015-08-16 20:09:51 +0300
committerZyX <kp-pav@yandex.ru>2015-10-08 22:00:47 +0300
commit2ba138b2f9c060c98af952e6956e48ad1521b0c9 (patch)
tree4d9b17f2626d72677f742d6f436823eb50373e4d /src/nvim/eval.c
parent22906265a2647aadcbc3ab9ab8a590bffd95002c (diff)
downloadrneovim-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.c19
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, &reg);
- 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;