1 regexec.c 2 3 This test generates "bad free" warnings when run under 4 PERL_DESTRUCT_LEVEL. This file merely serves as a placeholder 5 for investigation. 6 7 Complex regular subexpression recursion limit (%d) exceeded 8 9 $_ = 'a' x (2**15+1); /^()(a\1)*$/ ; 10 Complex regular subexpression recursion limit (%d) exceeded 11 12 $_ = 'a' x (2**15+1); /^()(a\1)*?$/ ; 13 14 (The actual value substituted for %d is masked in the tests so that 15 REG_INFTY configuration variable value does not affect outcome.) 16__END__ 17# regexec.c 18print("SKIPPED\n# most systems run into stacksize limits\n"),exit; 19use warnings 'regexp' ; 20$SIG{__WARN__} = sub{local ($m) = shift; 21 $m =~ s/\(\d+\)/(*MASKED*)/; 22 print STDERR $m}; 23$_ = 'a' x (2**15+1); 24/^()(a\1)*$/ ; 25# 26# If this test fails with a segmentation violation or similar, 27# you may have to increase the default stacksize limit in your 28# shell. You may need superuser privileges. 29# 30# Under the sh, ksh, zsh: 31# $ ulimit -s 32# 8192 33# $ ulimit -s 16000 34# 35# Under the csh: 36# % limit stacksize 37# stacksize 8192 kbytes 38# % limit stacksize 16000 39# 40EXPECT 41Complex regular subexpression recursion limit (*MASKED*) exceeded at - line 9. 42######## 43# regexec.c 44print("SKIPPED\n# most systems run into stacksize limits\n"),exit; 45no warnings 'regexp' ; 46$SIG{__WARN__} = sub{local ($m) = shift; 47 $m =~ s/\(\d+\)/(*MASKED*)/; 48 print STDERR $m}; 49$_ = 'a' x (2**15+1); 50/^()(a\1)*$/ ; 51# 52# If this test fails with a segmentation violation or similar, 53# you may have to increase the default stacksize limit in your 54# shell. You may need superuser privileges. 55# 56# Under the sh, ksh, zsh: 57# $ ulimit -s 58# 8192 59# $ ulimit -s 16000 60# 61# Under the csh: 62# % limit stacksize 63# stacksize 8192 kbytes 64# % limit stacksize 16000 65# 66EXPECT 67 68######## 69# regexec.c 70print("SKIPPED\n# most systems run into stacksize limits\n"),exit; 71use warnings 'regexp' ; 72$SIG{__WARN__} = sub{local ($m) = shift; 73 $m =~ s/\(\d+\)/(*MASKED*)/; 74 print STDERR $m}; 75$_ = 'a' x (2**15+1); 76/^()(a\1)*?$/ ; 77# 78# If this test fails with a segmentation violation or similar, 79# you may have to increase the default stacksize limit in your 80# shell. You may need superuser privileges. 81# 82# Under the sh, ksh, zsh: 83# $ ulimit -s 84# 8192 85# $ ulimit -s 16000 86# 87# Under the csh: 88# % limit stacksize 89# stacksize 8192 kbytes 90# % limit stacksize 16000 91# 92EXPECT 93Complex regular subexpression recursion limit (*MASKED*) exceeded at - line 9. 94######## 95# regexec.c 96print("SKIPPED\n# most systems run into stacksize limits\n"),exit; 97no warnings 'regexp' ; 98$SIG{__WARN__} = sub{local ($m) = shift; 99 $m =~ s/\(\d+\)/(*MASKED*)/; 100 print STDERR $m}; 101$_ = 'a' x (2**15+1); 102/^()(a\1)*?$/ ; 103# 104# If this test fails with a segmentation violation or similar, 105# you may have to increase the default stacksize limit in your 106# shell. You may need superuser privileges. 107# 108# Under the sh, ksh, zsh: 109# $ ulimit -s 110# 8192 111# $ ulimit -s 16000 112# 113# Under the csh: 114# % limit stacksize 115# stacksize 8192 kbytes 116# % limit stacksize 16000 117# 118EXPECT 119 120######## 121# NAME Wide character in non-UTF-8 locale 122require '../loc_tools.pl'; 123unless (locales_enabled()) { 124 print("SKIPPED\n# locales not available\n"),exit; 125} 126eval { require POSIX; POSIX->import("locale_h") }; 127if ($@) { 128 print("SKIPPED\n# no POSIX\n"),exit; 129} 130use warnings 'locale'; 131use locale; 132setlocale(&POSIX::LC_CTYPE, "C"); 133"\x{100}" =~ /\x{100}|\x{101}/il; 134"\x{100}" =~ /\x{100}|\x{101}/l; 135"\x{100}" =~ /\w/l; 136"\x{100}" =~ /\x{100}+/l; 137"\x{100}" =~ /[\x{100}\x{102}]/l; 138no warnings 'locale'; 139EXPECT 140Wide character (U+100) in pattern match (m//) at - line 12. 141Wide character (U+100) in pattern match (m//) at - line 12. 142Wide character (U+100) in pattern match (m//) at - line 13. 143Wide character (U+100) in pattern match (m//) at - line 13. 144Wide character (U+100) in pattern match (m//) at - line 13. 145Wide character (U+100) in pattern match (m//) at - line 14. 146Wide character (U+100) in pattern match (m//) at - line 14. 147Wide character (U+100) in pattern match (m//) at - line 15. 148Wide character (U+100) in pattern match (m//) at - line 16. 149Wide character (U+100) in pattern match (m//) at - line 16. 150######## 151# NAME Wide character in UTF-8 locale 152require '../loc_tools.pl'; 153unless (locales_enabled()) { 154 print("SKIPPED\n# locales not available\n"),exit; 155} 156eval { require POSIX; POSIX->import("locale_h") }; 157if ($@) { 158 print("SKIPPED\n# no POSIX\n"),exit; 159} 160my @utf8_locales = find_utf8_ctype_locale(); 161unless (@utf8_locales) { 162 print("SKIPPED\n# no UTF-8 locales\n"),exit; 163} 164use warnings 'locale'; 165use locale; 166setlocale(&POSIX::LC_CTYPE, $utf8_locales[0]); 167"\x{100}" =~ /\x{100}|\x{101}/il; 168"\x{100}" =~ /\x{100}|\x{101}/l; 169"\x{100}" =~ /\w/l; 170"\x{100}" =~ /\x{100}+/l; 171"\x{100}" =~ /[\x{100}\x{102}]/l; 172EXPECT 173######## 174# NAME \b{} in non-UTF-8 locale 175eval { require POSIX; POSIX->import("locale_h") }; 176if ($@) { 177 print("SKIPPED\n# no POSIX\n"),exit; 178} 179use warnings 'locale'; 180use locale; 181setlocale(&POSIX::LC_CTYPE, "C"); 182"a" =~ /\b{gcb}/l; 183no warnings 'locale'; 184"a" =~ /\b{gcb}/l; 185EXPECT 186Use of \b{} or \B{} for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 8. 187Use of \b{} or \B{} for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 8. 188######## 189# NAME \b{} in UTF-8 locale 190require '../loc_tools.pl'; 191unless (locales_enabled()) { 192 print("SKIPPED\n# locales not available\n"),exit; 193} 194eval { require POSIX; POSIX->import("locale_h") }; 195if ($@) { 196 print("SKIPPED\n# no POSIX\n"),exit; 197} 198my $utf8_locale = find_utf8_ctype_locale(); 199unless ($utf8_locale) { 200 print("SKIPPED\n# No UTF-8 locale available\n"),exit; 201} 202use warnings 'locale'; 203use locale; 204setlocale(&POSIX::LC_CTYPE, "C"); 205 "abc def" =~ /\b{wb}.*?/; 206 "abc def" =~ /\B{wb}.*?/; 207setlocale(&POSIX::LC_CTYPE, $utf8_locale); 208 "abc def" =~ /\b{wb}.*?/; 209 "abc def" =~ /\B{wb}.*?/; 210EXPECT 211Use of \b{} or \B{} for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 16. 212Use of \b{} or \B{} for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 16. 213Use of \b{} or \B{} for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 17. 214Use of \b{} or \B{} for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 17. 215Use of \b{} or \B{} for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 17. 216######## 217# NAME (?[ ]) in non-UTF-8 locale 218require '../loc_tools.pl'; 219unless (locales_enabled()) { 220 print("SKIPPED\n# locales not available\n"),exit; 221} 222eval { require POSIX; POSIX->import("locale_h") }; 223if ($@) { 224 print("SKIPPED\n# no POSIX\n"),exit; 225} 226no warnings 'experimental::regex_sets'; 227use warnings 'locale'; 228use locale; 229setlocale(&POSIX::LC_CTYPE, "C"); 230"\N{KELVIN SIGN}" =~ /(?[ \N{KELVIN SIGN} ])/i; 231"K" =~ /(?[ \N{KELVIN SIGN} ])/i; 232"k" =~ /(?[ \N{KELVIN SIGN} ])/i; 233":" =~ /(?[ \: ])/; 234no warnings 'locale'; 235EXPECT 236Use of (?[ ]) for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 13. 237Use of (?[ ]) for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 13. 238Use of (?[ ]) for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 14. 239Use of (?[ ]) for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 14. 240Use of (?[ ]) for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 15. 241Use of (?[ ]) for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 15. 242Use of (?[ ]) for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 16. 243Use of (?[ ]) for non-UTF-8 locale is wrong. Assuming a UTF-8 locale at - line 16. 244######## 245# NAME (?[ ]) in UTF-8 locale 246require '../loc_tools.pl'; 247unless (locales_enabled()) { 248 print("SKIPPED\n# locales not available\n"),exit; 249} 250eval { require POSIX; POSIX->import("locale_h") }; 251if ($@) { 252 print("SKIPPED\n# no POSIX\n"),exit; 253} 254my $utf8_locale = find_utf8_ctype_locale(); 255unless ($utf8_locale) { 256 print("SKIPPED\n# No UTF-8 locale available\n"),exit; 257} 258no warnings 'experimental::regex_sets'; 259use warnings 'locale'; 260use locale; 261setlocale(&POSIX::LC_CTYPE, $utf8_locale); 262"\N{KELVIN SIGN}" =~ /(?[ \N{KELVIN SIGN} ])/i; 263"K" =~ /(?[ \N{KELVIN SIGN} ])/i; 264"k" =~ /(?[ \N{KELVIN SIGN} ])/i; 265":" =~ /(?[ \: ])/; 266EXPECT 267