]> granicus.if.org Git - vim/commitdiff
patch 8.2.2485: when sourcing a script again the script version isn't reset v8.2.2485
authorBram Moolenaar <Bram@vim.org>
Sun, 7 Feb 2021 16:17:58 +0000 (17:17 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 7 Feb 2021 16:17:58 +0000 (17:17 +0100)
Problem:    When sourcing a script again the script version isn't reset.
Solution:   Set sn_version to one when sourcing a script again. Clear
            sn_save_cpo properly. (closes #7608)

src/scriptfile.c
src/testdir/test_vim9_script.vim
src/version.c

index c8a23d55a397006dd247d07a862da7e5ed86f3b7..82ae42a1a63c4ba0c43fb95dac7f19f843a5dd80 100644 (file)
@@ -1319,6 +1319,9 @@ do_source(
            }
        // imports can be redefined once
        mark_imports_for_reload(sid);
+
+       // reset version, "vim9script" may have been added or removed.
+       si->sn_version = 1;
     }
     else
     {
@@ -1457,7 +1460,7 @@ almosttheend:
     if (si->sn_save_cpo != NULL)
     {
        set_option_value((char_u *)"cpo", 0L, si->sn_save_cpo, 0);
-       CLEAR_POINTER(si->sn_save_cpo);
+       VIM_CLEAR(si->sn_save_cpo);
     }
 
     restore_funccal();
index 7f1e71dc68b0bd132b5809933f492b5a39b0275d..42a0d61dd0d59c3047165a9ead7c1854a68ebfdd 100644 (file)
@@ -2207,7 +2207,7 @@ def Test_while_loop()
   assert_equal('1_3_', result)
 
   var s = ''
-  while s == 'x' #{comment
+  while s == 'x' #{comment}
   endwhile
 enddef
 
@@ -3155,6 +3155,19 @@ def Test_restoring_cpo()
   delete('Xsourced')
   delete('Xclose')
   delete('Xdone')
+
+  writefile(['vim9script'], 'XanotherScript')
+  set cpo=aABceFsMny>
+  edit XanotherScript
+  so %
+  assert_equal('aABceFsMny>', &cpo)
+  :1del
+  w
+  so %
+  assert_equal('aABceFsMny>', &cpo)
+
+  delete('XanotherScript')
+  set cpo&vim
 enddef
 
 
index cbef3daf67ea8f94c72343ccc2d5a0bbd9a4c366..ca79c64dd888034e71e942e25079fc6e949e93fd 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2485,
 /**/
     2484,
 /**/