16fb12b70Safresh1#!./perl 26fb12b70Safresh1 36fb12b70Safresh1BEGIN { 46fb12b70Safresh1 chdir 't' if -d 't'; 56fb12b70Safresh1 @INC = '../lib'; 66fb12b70Safresh1 require './test.pl'; 76fb12b70Safresh1} 86fb12b70Safresh1 96fb12b70Safresh1{ # perl #116190 106fb12b70Safresh1 fresh_perl_is('print qq!@F!', '1 2', 116fb12b70Safresh1 { 126fb12b70Safresh1 stdin => "1:2", 136fb12b70Safresh1 switches => [ '-n', '-F:' ], 146fb12b70Safresh1 }, "passing -F implies -a"); 156fb12b70Safresh1 fresh_perl_is('print qq!@F!', '1 2', 166fb12b70Safresh1 { 176fb12b70Safresh1 stdin => "1:2", 186fb12b70Safresh1 switches => [ '-F:' ], 196fb12b70Safresh1 }, "passing -F implies -an"); 206fb12b70Safresh1 fresh_perl_is('print join q!,!, @F', '1,2', 216fb12b70Safresh1 { 226fb12b70Safresh1 stdin => "1 2", 236fb12b70Safresh1 switches => [ '-a' ], 246fb12b70Safresh1 }, "passing -a implies -n"); 256fb12b70Safresh1} 26*f2a19305Safresh1 27*f2a19305Safresh1 28*f2a19305Safresh1my $have_config = eval { require Config; 1 }; 29*f2a19305Safresh1SKIP: 30*f2a19305Safresh1{ 31*f2a19305Safresh1 $have_config or skip "Can't check if we have threads", 1; 32*f2a19305Safresh1 $Config::Config{usethreads} or skip "No threads", 1; 33*f2a19305Safresh1 is_miniperl() and skip "threads module not available under miniperl", 1; 34*f2a19305Safresh1 # this would only fail under valgrind/ASAN 35*f2a19305Safresh1 fresh_perl_is('print $F[1]; threads->new(sub {})->join', "b", 36*f2a19305Safresh1 { 37*f2a19305Safresh1 switches => [ "-F,", "-Mthreads" ], 38*f2a19305Safresh1 stdin => "a,b,c", 39*f2a19305Safresh1 }, "PL_splitstr freed in each thread"); 40*f2a19305Safresh1} 41*f2a19305Safresh1 42*f2a19305Safresh1{ 43*f2a19305Safresh1 # old value of PL_splitstr wasn't freed with multiple switches (it wasn't safe to before) 44*f2a19305Safresh1 # this would only fail under valgrind/LSAN 45*f2a19305Safresh1 fresh_perl_is('print $F[1]', "b", 46*f2a19305Safresh1 { 47*f2a19305Safresh1 switches => [ "-F:", "-F," ], 48*f2a19305Safresh1 stdin => "a,b,c", 49*f2a19305Safresh1 }, "PL_splitstr freed on extra -F switch"); 50*f2a19305Safresh1} 51*f2a19305Safresh1 52*f2a19305Safresh1done_testing(); 53