Mercurial > vim
diff src/eval.c @ 20128:0b35a7ffceb2 v8.2.0619
patch 8.2.0619: null dict is not handled like an empty dict
Commit: https://github.com/vim/vim/commit/ea04a6e8baff2f27da7cdd54bf70a5525994f76d
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Apr 23 13:38:02 2020 +0200
patch 8.2.0619: null dict is not handled like an empty dict
Problem: Null dict is not handled like an empty dict.
Solution: Fix the code and add tests. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/5968)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 23 Apr 2020 13:45:04 +0200 |
parents | 831b1ea43020 |
children | fe8d0a4344df |
line wrap: on
line diff
--- a/src/eval.c +++ b/src/eval.c @@ -871,7 +871,10 @@ get_lval( if (len != -1) key[len] = prevval; if (wrong) + { + clear_tv(&var1); return NULL; + } } if (lp->ll_di == NULL) @@ -4553,8 +4556,9 @@ echo_string_core( case VAR_DICT: if (tv->vval.v_dict == NULL) { + // NULL dict is equivalent to empty dict. *tofree = NULL; - r = NULL; + r = (char_u *)"{}"; } else if (copyID != 0 && tv->vval.v_dict->dv_copyID == copyID && tv->vval.v_dict->dv_hashtab.ht_used != 0) @@ -4565,6 +4569,7 @@ echo_string_core( else { int old_copyID = tv->vval.v_dict->dv_copyID; + tv->vval.v_dict->dv_copyID = copyID; *tofree = dict2string(tv, copyID, restore_copyID); if (restore_copyID)