This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
d956cb8023a16e73a3574bf74c121c6eaa67805f
[perl5.git] / t / lib / warnings / regexec
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
18 print("SKIPPED\n# most systems run into stacksize limits\n"),exit;
19 use 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 #
40 EXPECT
41 Complex regular subexpression recursion limit (*MASKED*) exceeded at - line 9.
42 ########
43 # regexec.c
44 print("SKIPPED\n# most systems run into stacksize limits\n"),exit;
45 no 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 #
66 EXPECT
67
68 ########
69 # regexec.c
70 print("SKIPPED\n# most systems run into stacksize limits\n"),exit;
71 use 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 #
92 EXPECT
93 Complex regular subexpression recursion limit (*MASKED*) exceeded at - line 9.
94 ########
95 # regexec.c
96 print("SKIPPED\n# most systems run into stacksize limits\n"),exit;
97 no 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 #
118 EXPECT
119
120 ########
121 # NAME Wide character in non-UTF-8 locale
122 require '../loc_tools.pl';
123 unless (locales_enabled()) {
124     print("SKIPPED\n# locales not available\n"),exit;
125 }
126 eval { require POSIX; POSIX->import("locale_h") };
127 if ($@) {
128     print("SKIPPED\n# no POSIX\n"),exit;
129 }
130 use warnings 'locale';
131 use locale;
132 setlocale(&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;
138 no warnings 'locale';
139 EXPECT
140 Wide character (U+100) in pattern match (m//) at - line 12.
141 Wide character (U+100) in pattern match (m//) at - line 12.
142 Wide character (U+100) in pattern match (m//) at - line 13.
143 Wide character (U+100) in pattern match (m//) at - line 13.
144 Wide character (U+100) in pattern match (m//) at - line 13.
145 Wide character (U+100) in pattern match (m//) at - line 14.
146 Wide character (U+100) in pattern match (m//) at - line 14.
147 Wide character (U+100) in pattern match (m//) at - line 15.
148 Wide character (U+100) in pattern match (m//) at - line 16.
149 Wide character (U+100) in pattern match (m//) at - line 16.
150 ########
151 # NAME \b{} in non-UTF-8 locale
152 eval { require POSIX; POSIX->import("locale_h") };
153 if ($@) {
154     print("SKIPPED\n# no POSIX\n"),exit;
155 }
156 use warnings 'locale';
157 use locale;
158 setlocale(&POSIX::LC_CTYPE, "C");
159 "a" =~ /\b{gcb}/l;
160 no warnings 'locale';
161 "a" =~ /\b{gcb}/l;
162 EXPECT
163 Use of \b{} for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 8.
164 Use of \b{} for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 8.