Skip to content

Commit 0123cc1

Browse files
committed
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)
1 parent dee37dc commit 0123cc1

3 files changed

Lines changed: 20 additions & 2 deletions

File tree

src/scriptfile.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1319,6 +1319,9 @@ do_source(
13191319
}
13201320
// imports can be redefined once
13211321
mark_imports_for_reload(sid);
1322+
1323+
// reset version, "vim9script" may have been added or removed.
1324+
si->sn_version = 1;
13221325
}
13231326
else
13241327
{
@@ -1457,7 +1460,7 @@ do_source(
14571460
if (si->sn_save_cpo != NULL)
14581461
{
14591462
set_option_value((char_u *)"cpo", 0L, si->sn_save_cpo, 0);
1460-
CLEAR_POINTER(si->sn_save_cpo);
1463+
VIM_CLEAR(si->sn_save_cpo);
14611464
}
14621465

14631466
restore_funccal();

src/testdir/test_vim9_script.vim

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2207,7 +2207,7 @@ def Test_while_loop()
22072207
assert_equal('1_3_', result)
22082208

22092209
var s = ''
2210-
while s == 'x' #{comment
2210+
while s == 'x' #{comment}
22112211
endwhile
22122212
enddef
22132213

@@ -3155,6 +3155,19 @@ def Test_restoring_cpo()
31553155
delete('Xsourced')
31563156
delete('Xclose')
31573157
delete('Xdone')
3158+
3159+
writefile(['vim9script'], 'XanotherScript')
3160+
set cpo=aABceFsMny>
3161+
edit XanotherScript
3162+
so %
3163+
assert_equal('aABceFsMny>', &cpo)
3164+
:1del
3165+
w
3166+
so %
3167+
assert_equal('aABceFsMny>', &cpo)
3168+
3169+
delete('XanotherScript')
3170+
set cpo&vim
31583171
enddef
31593172

31603173

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,8 @@ static char *(features[]) =
750750

751751
static int included_patches[] =
752752
{ /* Add new patch number below this line */
753+
/**/
754+
2485,
753755
/**/
754756
2484,
755757
/**/

0 commit comments

Comments
 (0)