Patch 8.1.0167
Problem:    Lock flag in new dictitem is reset in many places.
Solution:   Always reset the lock flag.
Files:      src/dict.c, src/channel.c, src/ex_cmds2.c, src/userfunc.c,
            src/if_perl.xs, src/if_py_both.h


*** ../vim-8.1.0166/src/dict.c  Sun Jul  8 16:50:33 2018
--- src/dict.c  Sun Jul  8 17:06:50 2018
***************
*** 188,194 ****
  /*
   * 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!
   * Returns NULL when out of memory.
   */
      dictitem_T *
--- 188,195 ----
  /*
   * Allocate a Dictionary item.
   * The "key" is copied to the new item.
!  * 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,206 ****
--- 202,208 ----
      {
        STRCPY(di->di_key, key);
        di->di_flags = DI_FLAGS_ALLOC;
+       di->di_tv.v_lock = 0;
      }
      return di;
  }
***************
*** 338,344 ****
      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)
--- 340,345 ----
***************
*** 361,367 ****
      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)
--- 362,367 ----
***************
*** 384,390 ****
      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;
--- 384,389 ----
***************
*** 408,414 ****
      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;
--- 407,412 ----
*** ../vim-8.1.0166/src/channel.c       Sun Jul  8 16:50:33 2018
--- src/channel.c       Sun Jul  8 17:05:44 2018
***************
*** 5742,5748 ****
      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)
--- 5742,5747 ----
*** ../vim-8.1.0166/src/ex_cmds2.c      Sun Jul  8 16:50:33 2018
--- src/ex_cmds2.c      Sun Jul  8 17:07:59 2018
***************
*** 1524,1530 ****
            di->di_tv.v_type = VAR_FUNC;
            di->di_tv.vval.v_string = vim_strsave(timer->tr_callback);
        }
-       di->di_tv.v_lock = 0;
      }
  }
  
--- 1524,1529 ----
*** ../vim-8.1.0166/src/userfunc.c      Sat Jun 30 18:27:59 2018
--- src/userfunc.c      Sun Jul  8 17:10:33 2018
***************
*** 2390,2396 ****
                /* 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 */
--- 2390,2395 ----
*** ../vim-8.1.0166/src/if_perl.xs      Tue Mar  6 12:22:50 2018
--- src/if_perl.xs      Sun Jul  8 17:11:10 2018
***************
*** 1200,1209 ****
  
                    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;
  
                    if (dict_add(dict, item) == FAIL) {
                        dictitem_free(item);
--- 1200,1207 ----
  
                    if ((item = dictitem_alloc((char_u *)key)) == NULL)
                        break;
!                   item->di_tv.v_type = VAR_NUMBER;
!                   item->di_tv.vval.v_number = 0;
  
                    if (dict_add(dict, item) == FAIL) {
                        dictitem_free(item);
*** ../vim-8.1.0166/src/if_py_both.h    Sun Jun 10 13:55:48 2018
--- src/if_py_both.h    Sun Jul  8 17:12:13 2018
***************
*** 1832,1838 ****
            PyErr_NoMemory();
            return -1;
        }
-       di->di_tv.v_lock = 0;
        di->di_tv.v_type = VAR_UNKNOWN;
  
        if (dict_add(dict, di) == FAIL)
--- 1832,1837 ----
***************
*** 2038,2044 ****
                    PyErr_NoMemory();
                    return NULL;
                }
-               di->di_tv.v_lock = 0;
                di->di_tv.v_type = VAR_UNKNOWN;
  
                valObject = PySequence_Fast_GET_ITEM(fast, 1);
--- 2037,2042 ----
***************
*** 5852,5858 ****
            dict_unref(dict);
            return -1;
        }
-       di->di_tv.v_lock = 0;
  
        if (_ConvertFromPyObject(valObject, &di->di_tv, lookup_dict) == -1)
        {
--- 5850,5855 ----
***************
*** 5950,5956 ****
            PyErr_NoMemory();
            return -1;
        }
-       di->di_tv.v_lock = 0;
  
        if (_ConvertFromPyObject(valObject, &di->di_tv, lookup_dict) == -1)
        {
--- 5947,5952 ----
*** ../vim-8.1.0166/src/version.c       Sun Jul  8 16:50:33 2018
--- src/version.c       Sun Jul  8 17:18:05 2018
***************
*** 791,792 ****
--- 791,794 ----
  {   /* Add new patch number below this line */
+ /**/
+     167,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
208. Your goals for the future are obtaining an T1 connection and
     a 130 gig hard drive.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui