diff options
-rw-r--r-- | src/evalvars.c | 16 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9type.c | 4 |
3 files changed, 19 insertions, 3 deletions
diff --git a/src/evalvars.c b/src/evalvars.c index 5a26effbb3..4cc0fa8e34 100644 --- a/src/evalvars.c +++ b/src/evalvars.c @@ -3462,9 +3462,21 @@ set_var_const( if (vim9script && type != NULL) { if (type->tt_type == VAR_DICT && dest_tv->vval.v_dict != NULL) - dest_tv->vval.v_dict->dv_type = alloc_type(type); + { + if (dest_tv->vval.v_dict->dv_type != type) + { + free_type(dest_tv->vval.v_dict->dv_type); + dest_tv->vval.v_dict->dv_type = alloc_type(type); + } + } else if (type->tt_type == VAR_LIST && dest_tv->vval.v_list != NULL) - dest_tv->vval.v_list->lv_type = alloc_type(type); + { + if (dest_tv->vval.v_list->lv_type != type) + { + free_type(dest_tv->vval.v_list->lv_type); + dest_tv->vval.v_list->lv_type = alloc_type(type); + } + } } // ":const var = value" locks the value diff --git a/src/version.c b/src/version.c index 2d6f6c7bfd..d10f8aabb0 100644 --- a/src/version.c +++ b/src/version.c @@ -756,6 +756,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3429, +/**/ 3428, /**/ 3427, diff --git a/src/vim9type.c b/src/vim9type.c index c14b97fad3..b9e9b27ad1 100644 --- a/src/vim9type.c +++ b/src/vim9type.c @@ -258,7 +258,7 @@ func_type_add_arg_types( typval2type_int(typval_T *tv, int copyID, garray_T *type_gap, int do_member) { type_T *type; - type_T *member_type = &t_any; + type_T *member_type = NULL; int argcount = 0; int min_argcount = 0; @@ -268,6 +268,8 @@ typval2type_int(typval_T *tv, int copyID, garray_T *type_gap, int do_member) return &t_bool; if (tv->v_type == VAR_STRING) return &t_string; + if (tv->v_type == VAR_BLOB) + return &t_blob; if (tv->v_type == VAR_LIST) { |