summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-07-08 17:19:02 +0200
committerBram Moolenaar <Bram@vim.org>2018-07-08 17:19:02 +0200
commitc89d4b35300b98cf68b14c89c8e1add51bd857e3 (patch)
tree467d753ac74270da629887f484f797509696d302
parente0be167a805fd547c25ec1ec97fd4c7f13046236 (diff)
downloadvim-git-c89d4b35300b98cf68b14c89c8e1add51bd857e3.tar.gz
patch 8.1.0167: lock flag in new dictitem is reset in many placesv8.1.0167
Problem: Lock flag in new dictitem is reset in many places. Solution: Always reset the lock flag.
-rw-r--r--src/channel.c1
-rw-r--r--src/dict.c8
-rw-r--r--src/ex_cmds2.c1
-rw-r--r--src/if_perl.xs6
-rw-r--r--src/if_py_both.h4
-rw-r--r--src/userfunc.c1
-rw-r--r--src/version.c2
7 files changed, 7 insertions, 16 deletions
diff --git a/src/channel.c b/src/channel.c
index c62da8bd3..de2f50de2 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -5742,7 +5742,6 @@ job_info(job_T *job, dict_T *dict)
item = dictitem_alloc((char_u *)"channel");
if (item == NULL)
return;
- item->di_tv.v_lock = 0;
item->di_tv.v_type = VAR_CHANNEL;
item->di_tv.vval.v_channel = job->jv_channel;
if (job->jv_channel != NULL)
diff --git a/src/dict.c b/src/dict.c
index e1f7fa23e..c359e6f0f 100644
--- a/src/dict.c
+++ b/src/dict.c
@@ -188,7 +188,8 @@ dict_free_items(int copyID)
/*
* Allocate a Dictionary item.
* The "key" is copied to the new item.
- * Note that the value of the item "di_tv" still needs to be initialized!
+ * Note that the type and value of the item "di_tv" still needs to be
+ * initialized!
* Returns NULL when out of memory.
*/
dictitem_T *
@@ -201,6 +202,7 @@ dictitem_alloc(char_u *key)
{
STRCPY(di->di_key, key);
di->di_flags = DI_FLAGS_ALLOC;
+ di->di_tv.v_lock = 0;
}
return di;
}
@@ -338,7 +340,6 @@ dict_add_number(dict_T *d, char *key, varnumber_T nr)
item = dictitem_alloc((char_u *)key);
if (item == NULL)
return FAIL;
- item->di_tv.v_lock = 0;
item->di_tv.v_type = VAR_NUMBER;
item->di_tv.vval.v_number = nr;
if (dict_add(d, item) == FAIL)
@@ -361,7 +362,6 @@ dict_add_string(dict_T *d, char *key, char_u *str)
item = dictitem_alloc((char_u *)key);
if (item == NULL)
return FAIL;
- item->di_tv.v_lock = 0;
item->di_tv.v_type = VAR_STRING;
item->di_tv.vval.v_string = str != NULL ? vim_strsave(str) : NULL;
if (dict_add(d, item) == FAIL)
@@ -384,7 +384,6 @@ dict_add_list(dict_T *d, char *key, list_T *list)
item = dictitem_alloc((char_u *)key);
if (item == NULL)
return FAIL;
- item->di_tv.v_lock = 0;
item->di_tv.v_type = VAR_LIST;
item->di_tv.vval.v_list = list;
++list->lv_refcount;
@@ -408,7 +407,6 @@ dict_add_dict(dict_T *d, char *key, dict_T *dict)
item = dictitem_alloc((char_u *)key);
if (item == NULL)
return FAIL;
- item->di_tv.v_lock = 0;
item->di_tv.v_type = VAR_DICT;
item->di_tv.vval.v_dict = dict;
++dict->dv_refcount;
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 6887ca135..cb046357d 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -1524,7 +1524,6 @@ add_timer_info(typval_T *rettv, timer_T *timer)
di->di_tv.v_type = VAR_FUNC;
di->di_tv.vval.v_string = vim_strsave(timer->tr_callback);
}
- di->di_tv.v_lock = 0;
}
}
diff --git a/src/if_perl.xs b/src/if_perl.xs
index 7b45033ff..40955ebf0 100644
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -1200,10 +1200,8 @@ perl_to_vim(SV *sv, typval_T *rettv)
if ((item = dictitem_alloc((char_u *)key)) == NULL)
break;
-
- item->di_tv.v_type = VAR_NUMBER;
- item->di_tv.v_lock = 0;
- item->di_tv.vval.v_number = 0;
+ item->di_tv.v_type = VAR_NUMBER;
+ item->di_tv.vval.v_number = 0;
if (dict_add(dict, item) == FAIL) {
dictitem_free(item);
diff --git a/src/if_py_both.h b/src/if_py_both.h
index 526cbd784..417f86cbb 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -1832,7 +1832,6 @@ DictionaryAssItem(
PyErr_NoMemory();
return -1;
}
- di->di_tv.v_lock = 0;
di->di_tv.v_type = VAR_UNKNOWN;
if (dict_add(dict, di) == FAIL)
@@ -2038,7 +2037,6 @@ DictionaryUpdate(DictionaryObject *self, PyObject *args, PyObject *kwargs)
PyErr_NoMemory();
return NULL;
}
- di->di_tv.v_lock = 0;
di->di_tv.v_type = VAR_UNKNOWN;
valObject = PySequence_Fast_GET_ITEM(fast, 1);
@@ -5852,7 +5850,6 @@ pydict_to_tv(PyObject *obj, typval_T *tv, PyObject *lookup_dict)
dict_unref(dict);
return -1;
}
- di->di_tv.v_lock = 0;
if (_ConvertFromPyObject(valObject, &di->di_tv, lookup_dict) == -1)
{
@@ -5950,7 +5947,6 @@ pymap_to_tv(PyObject *obj, typval_T *tv, PyObject *lookup_dict)
PyErr_NoMemory();
return -1;
}
- di->di_tv.v_lock = 0;
if (_ConvertFromPyObject(valObject, &di->di_tv, lookup_dict) == -1)
{
diff --git a/src/userfunc.c b/src/userfunc.c
index 1c17737ac..71acaecc3 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -2390,7 +2390,6 @@ ex_function(exarg_T *eap)
/* overwrite existing dict entry */
clear_tv(&fudi.fd_di->di_tv);
fudi.fd_di->di_tv.v_type = VAR_FUNC;
- fudi.fd_di->di_tv.v_lock = 0;
fudi.fd_di->di_tv.vval.v_string = vim_strsave(name);
/* behave like "dict" was used */
diff --git a/src/version.c b/src/version.c
index dd3fb19f3..43d3616d5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -790,6 +790,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 167,
+/**/
166,
/**/
165,