@@ -4,6 +4,9 @@ if !has('perl')
44 finish
55end
66
7+ " FIXME: RunTest don't see any error when Perl abort...
8+ perl $SIG {__WARN__} = sub { die " Unexpected warnings from perl: @_" };
9+
710func Test_change_buffer ()
811 call setline (line (' $' ), [' 1 line 1' ])
912 perl VIM:: DoCommand (" normal /^1\n " )
@@ -229,6 +232,15 @@ func Test_000_SvREFCNT()
229232#line 5 " Test_000_SvREFCNT()"
230233 my ($b , $w );
231234
235+ my $num = 0 ;
236+ for ( 0 .. 100 ) {
237+ if ( ++ $num >= 8 ) { $num = 0 }
238+ VIM:: DoCommand (" buffer X$num" );
239+ $b = $curbuf ;
240+ }
241+
242+ VIM:: DoCommand (" buffer t" );
243+
232244 $b = $curbuf for 0 .. 100 ;
233245 $w = $curwin for 0 .. 100 ;
234246 () = VIM::Buffers for 0 .. 100 ;
@@ -240,12 +252,13 @@ func Test_000_SvREFCNT()
240252 my $cw = Internals: : SvREFCNT ($ $w );
241253 VIM:: Eval (" assert_equal(2, $cb, 'T1')" );
242254 VIM:: Eval (" assert_equal(2, $cw, 'T2')" );
255+ my $strongref ;
243256 foreach ( VIM::Buffers, VIM::Windows ) {
257+ VIM:: DoCommand (" %bw!" );
244258 my $c = Internals: : SvREFCNT ($_ );
245259 VIM:: Eval (" assert_equal(2, $c, 'T3')" );
246260 $c = Internals: : SvREFCNT ($ $_ );
247- # Why only one ref?
248- # Look wrong but work. Maybe not portable...
261+ next if $c == 2 && ! $strongref ++ ;
249262 VIM:: Eval (" assert_equal(1, $c, 'T4')" );
250263 }
251264 $cb = Internals: : SvREFCNT ($ $curbuf );
0 commit comments