Skip to content

Commit c89d4b3

Browse files
committed
patch 8.1.0167: lock flag in new dictitem is reset in many places
Problem: Lock flag in new dictitem is reset in many places. Solution: Always reset the lock flag.
1 parent e0be167 commit c89d4b3

7 files changed

Lines changed: 7 additions & 16 deletions

File tree

src/channel.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5742,7 +5742,6 @@ job_info(job_T *job, dict_T *dict)
57425742
item = dictitem_alloc((char_u *)"channel");
57435743
if (item == NULL)
57445744
return;
5745-
item->di_tv.v_lock = 0;
57465745
item->di_tv.v_type = VAR_CHANNEL;
57475746
item->di_tv.vval.v_channel = job->jv_channel;
57485747
if (job->jv_channel != NULL)

src/dict.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,8 @@ dict_free_items(int copyID)
188188
/*
189189
* Allocate a Dictionary item.
190190
* The "key" is copied to the new item.
191-
* Note that the value of the item "di_tv" still needs to be initialized!
191+
* Note that the type and value of the item "di_tv" still needs to be
192+
* initialized!
192193
* Returns NULL when out of memory.
193194
*/
194195
dictitem_T *
@@ -201,6 +202,7 @@ dictitem_alloc(char_u *key)
201202
{
202203
STRCPY(di->di_key, key);
203204
di->di_flags = DI_FLAGS_ALLOC;
205+
di->di_tv.v_lock = 0;
204206
}
205207
return di;
206208
}
@@ -338,7 +340,6 @@ dict_add_number(dict_T *d, char *key, varnumber_T nr)
338340
item = dictitem_alloc((char_u *)key);
339341
if (item == NULL)
340342
return FAIL;
341-
item->di_tv.v_lock = 0;
342343
item->di_tv.v_type = VAR_NUMBER;
343344
item->di_tv.vval.v_number = nr;
344345
if (dict_add(d, item) == FAIL)
@@ -361,7 +362,6 @@ dict_add_string(dict_T *d, char *key, char_u *str)
361362
item = dictitem_alloc((char_u *)key);
362363
if (item == NULL)
363364
return FAIL;
364-
item->di_tv.v_lock = 0;
365365
item->di_tv.v_type = VAR_STRING;
366366
item->di_tv.vval.v_string = str != NULL ? vim_strsave(str) : NULL;
367367
if (dict_add(d, item) == FAIL)
@@ -384,7 +384,6 @@ dict_add_list(dict_T *d, char *key, list_T *list)
384384
item = dictitem_alloc((char_u *)key);
385385
if (item == NULL)
386386
return FAIL;
387-
item->di_tv.v_lock = 0;
388387
item->di_tv.v_type = VAR_LIST;
389388
item->di_tv.vval.v_list = list;
390389
++list->lv_refcount;
@@ -408,7 +407,6 @@ dict_add_dict(dict_T *d, char *key, dict_T *dict)
408407
item = dictitem_alloc((char_u *)key);
409408
if (item == NULL)
410409
return FAIL;
411-
item->di_tv.v_lock = 0;
412410
item->di_tv.v_type = VAR_DICT;
413411
item->di_tv.vval.v_dict = dict;
414412
++dict->dv_refcount;

src/ex_cmds2.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1524,7 +1524,6 @@ add_timer_info(typval_T *rettv, timer_T *timer)
15241524
di->di_tv.v_type = VAR_FUNC;
15251525
di->di_tv.vval.v_string = vim_strsave(timer->tr_callback);
15261526
}
1527-
di->di_tv.v_lock = 0;
15281527
}
15291528
}
15301529

src/if_perl.xs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1200,10 +1200,8 @@ perl_to_vim(SV *sv, typval_T *rettv)
12001200

12011201
if ((item = dictitem_alloc((char_u *)key)) == NULL)
12021202
break;
1203-
1204-
item->di_tv.v_type = VAR_NUMBER;
1205-
item->di_tv.v_lock = 0;
1206-
item->di_tv.vval.v_number = 0;
1203+
item->di_tv.v_type = VAR_NUMBER;
1204+
item->di_tv.vval.v_number = 0;
12071205

12081206
if (dict_add(dict, item) == FAIL) {
12091207
dictitem_free(item);

src/if_py_both.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1832,7 +1832,6 @@ DictionaryAssItem(
18321832
PyErr_NoMemory();
18331833
return -1;
18341834
}
1835-
di->di_tv.v_lock = 0;
18361835
di->di_tv.v_type = VAR_UNKNOWN;
18371836

18381837
if (dict_add(dict, di) == FAIL)
@@ -2038,7 +2037,6 @@ DictionaryUpdate(DictionaryObject *self, PyObject *args, PyObject *kwargs)
20382037
PyErr_NoMemory();
20392038
return NULL;
20402039
}
2041-
di->di_tv.v_lock = 0;
20422040
di->di_tv.v_type = VAR_UNKNOWN;
20432041

20442042
valObject = PySequence_Fast_GET_ITEM(fast, 1);
@@ -5852,7 +5850,6 @@ pydict_to_tv(PyObject *obj, typval_T *tv, PyObject *lookup_dict)
58525850
dict_unref(dict);
58535851
return -1;
58545852
}
5855-
di->di_tv.v_lock = 0;
58565853

58575854
if (_ConvertFromPyObject(valObject, &di->di_tv, lookup_dict) == -1)
58585855
{
@@ -5950,7 +5947,6 @@ pymap_to_tv(PyObject *obj, typval_T *tv, PyObject *lookup_dict)
59505947
PyErr_NoMemory();
59515948
return -1;
59525949
}
5953-
di->di_tv.v_lock = 0;
59545950

59555951
if (_ConvertFromPyObject(valObject, &di->di_tv, lookup_dict) == -1)
59565952
{

src/userfunc.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2390,7 +2390,6 @@ ex_function(exarg_T *eap)
23902390
/* overwrite existing dict entry */
23912391
clear_tv(&fudi.fd_di->di_tv);
23922392
fudi.fd_di->di_tv.v_type = VAR_FUNC;
2393-
fudi.fd_di->di_tv.v_lock = 0;
23942393
fudi.fd_di->di_tv.vval.v_string = vim_strsave(name);
23952394

23962395
/* behave like "dict" was used */

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -789,6 +789,8 @@ static char *(features[]) =
789789

790790
static int included_patches[] =
791791
{ /* Add new patch number below this line */
792+
/**/
793+
167,
792794
/**/
793795
166,
794796
/**/

0 commit comments

Comments
 (0)