home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / patches / 7.4 / 7.4.419 < prev    next >
Encoding:
Internet Message Format  |  2014-08-29  |  3.2 KB

  1. To: vim_dev@googlegroups.com
  2. Subject: Patch 7.4.419
  3. Fcc: outbox
  4. From: Bram Moolenaar <Bram@moolenaar.net>
  5. Mime-Version: 1.0
  6. Content-Type: text/plain; charset=UTF-8
  7. Content-Transfer-Encoding: 8bit
  8. ------------
  9.  
  10. Patch 7.4.419
  11. Problem:    When part of a list is locked it's possible to make changes.
  12. Solution:   Check if any of the list items is locked before make a change.
  13.         (ZyX)
  14. Files:        src/eval.c, src/testdir/test55.in, src/testdir/test55.ok
  15.  
  16.  
  17. *** ../vim-7.4.418/src/eval.c    2014-08-22 13:13:24.219895762 +0200
  18. --- src/eval.c    2014-08-29 09:37:56.930403905 +0200
  19. ***************
  20. *** 2945,2950 ****
  21. --- 2945,2967 ----
  22.       ;
  23.       else if (lp->ll_range)
  24.       {
  25. +     listitem_T *ll_li = lp->ll_li;
  26. +     int ll_n1 = lp->ll_n1;
  27. +     /*
  28. +      * Check whether any of the list items is locked
  29. +      */
  30. +     for (ri = rettv->vval.v_list->lv_first; ri != NULL; )
  31. +     {
  32. +         if (tv_check_lock(ll_li->li_tv.v_lock, lp->ll_name))
  33. +         return;
  34. +         ri = ri->li_next;
  35. +         if (ri == NULL || (!lp->ll_empty2 && lp->ll_n2 == ll_n1))
  36. +         break;
  37. +         ll_li = ll_li->li_next;
  38. +         ++ll_n1;
  39. +     }
  40.       /*
  41.        * Assign the List values to the list items.
  42.        */
  43. ***************
  44. *** 3646,3651 ****
  45. --- 3663,3679 ----
  46.       else if (lp->ll_range)
  47.       {
  48.       listitem_T    *li;
  49. +     listitem_T    *ll_li = lp->ll_li;
  50. +     int           ll_n1 = lp->ll_n1;
  51. +     while (ll_li != NULL && (lp->ll_empty2 || lp->ll_n2 >= ll_n1))
  52. +     {
  53. +         li = ll_li->li_next;
  54. +         if (tv_check_lock(ll_li->li_tv.v_lock, lp->ll_name))
  55. +         return FAIL;
  56. +         ll_li = li;
  57. +         ++ll_n1;
  58. +     }
  59.   
  60.       /* Delete a range of List items. */
  61.       while (lp->ll_li != NULL && (lp->ll_empty2 || lp->ll_n2 >= lp->ll_n1))
  62. *** ../vim-7.4.418/src/testdir/test55.in    2014-07-02 19:06:14.686326091 +0200
  63. --- src/testdir/test55.in    2014-08-29 09:37:23.474403832 +0200
  64. ***************
  65. *** 282,287 ****
  66. --- 282,302 ----
  67.   :    $put =ps
  68.   :  endfor
  69.   :endfor
  70. + :unlet l
  71. + :let l = [1, 2, 3, 4]
  72. + :lockvar! l
  73. + :$put =string(l)
  74. + :unlockvar l[1]
  75. + :unlet l[0:1]
  76. + :$put =string(l)
  77. + :unlet l[1:2]
  78. + :$put =string(l)
  79. + :unlockvar l[1]
  80. + :let l[0:1] = [0, 1]
  81. + :$put =string(l)
  82. + :let l[1:2] = [0, 1]
  83. + :$put =string(l)
  84. + :unlet l
  85.   :" :lockvar/islocked() triggering script autoloading
  86.   :set rtp+=./sautest
  87.   :lockvar g:footest#x
  88. *** ../vim-7.4.418/src/testdir/test55.ok    2014-07-02 19:06:14.686326091 +0200
  89. --- src/testdir/test55.ok    2014-08-29 09:37:29.606403846 +0200
  90. ***************
  91. *** 86,91 ****
  92. --- 86,96 ----
  93.   FFpFFpp
  94.   0000-000
  95.   ppppppp
  96. + [1, 2, 3, 4]
  97. + [1, 2, 3, 4]
  98. + [1, 2, 3, 4]
  99. + [1, 2, 3, 4]
  100. + [1, 2, 3, 4]
  101.   locked g:footest#x:-1
  102.   exists g:footest#x:0
  103.   g:footest#x: 1
  104. *** ../vim-7.4.418/src/version.c    2014-08-29 09:02:23.890399246 +0200
  105. --- src/version.c    2014-08-29 09:39:24.658404097 +0200
  106. ***************
  107. *** 743,744 ****
  108. --- 743,746 ----
  109.   {   /* Add new patch number below this line */
  110. + /**/
  111. +     419,
  112.   /**/
  113.  
  114. -- 
  115. hundred-and-one symptoms of being an internet addict:
  116. 90. Instead of calling you to dinner, your spouse sends e-mail.
  117.  
  118.  /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
  119. ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
  120. \\\  an exciting new programming language -- http://www.Zimbu.org        ///
  121.  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
  122.