patch 8.2.2485: when sourcing a script again the script version isn't reset
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)
diff --git a/src/scriptfile.c b/src/scriptfile.c
index c8a23d5..82ae42a 100644
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -1319,6 +1319,9 @@
}
// 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 @@
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();
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 7f1e71d..42a0d61 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -2207,7 +2207,7 @@
assert_equal('1_3_', result)
var s = ''
- while s == 'x' #{comment
+ while s == 'x' #{comment}
endwhile
enddef
@@ -3155,6 +3155,19 @@
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
diff --git a/src/version.c b/src/version.c
index cbef3da..ca79c64 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2485,
+/**/
2484,
/**/
2483,