]> granicus.if.org Git - vim/commitdiff
patch 8.1.0167: lock flag in new dictitem is reset in many places v8.1.0167
authorBram Moolenaar <Bram@vim.org>
Sun, 8 Jul 2018 15:19:02 +0000 (17:19 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 8 Jul 2018 15:19:02 +0000 (17:19 +0200)
Problem:    Lock flag in new dictitem is reset in many places.
Solution:   Always reset the lock flag.

src/channel.c
src/dict.c
src/ex_cmds2.c
src/if_perl.xs
src/if_py_both.h
src/userfunc.c
src/version.c

index c62da8bd3193cc397f9f7a5d7a6685798ee6639e..de2f50de2b858b8a29bfa0dc53e807a3c08d4222 100644 (file)
@@ -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)
index e1f7fa23e82bfca649e0ce24359ee2191f9163fe..c359e6f0f6d26023e52ebc3bc9018b953a3ef8b2 100644 (file)
@@ -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;
index 6887ca1358a09afdee42f722fb871d3ce1b11d5f..cb046357dbb5a2c49333cff619dc82c35d903c83 100644 (file)
@@ -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;
     }
 }
 
index 7b45033fff80f947515cf07e547230b654e4e788..40955ebf0e69bcfed433414292014e96c52f9367 100644 (file)
@@ -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);
index 526cbd784881f6f5302c46fe584b5b1476a1a919..417f86cbb9a9cb3861fa5ff905a57ad56fcbfd62 100644 (file)
@@ -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)
        {
index 1c17737ac7f76b6c914d1f03b11dac456623caf6..71acaecc3a9373c581b04ef7ad3250f17d5190d9 100644 (file)
@@ -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 */
index dd3fb19f357fc80ae89be91151726780f2d91ffb..43d3616d5ba7d9ea99d40071416ab2aa1c4037af 100644 (file)
@@ -789,6 +789,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    167,
 /**/
     166,
 /**/