This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlapi: Fix grammar
[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 Wide character in UTF-8 locale
152 require '../loc_tools.pl';
153 unless (locales_enabled()) {
154     print("SKIPPED\n# locales not available\n"),exit;
155 }
156 eval { require POSIX; POSIX->import("locale_h") };
157 if ($@) {
158     print("SKIPPED\n# no POSIX\n"),exit;
159 }
160 my @utf8_locales = find_utf8_ctype_locale();
161 unless (@utf8_locales) {
162     print("SKIPPED\n# no UTF-8 locales\n"),exit;
163 }
164 use warnings 'locale';
165 use locale;
166 setlocale(&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;
172 EXPECT
173 ########
174 # NAME \b{} in non-UTF-8 locale
175 eval { require POSIX; POSIX->import("locale_h") };
176 if ($@) {
177     print("SKIPPED\n# no POSIX\n"),exit;
178 }
179 use warnings 'locale';
180 use locale;
181 setlocale(&POSIX::LC_CTYPE, "C");
182 "a" =~ /\b{gcb}/l;
183 no warnings 'locale';
184 "a" =~ /\b{gcb}/l;
185 EXPECT
186 Use of \b{} or \B{} for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 8.
187 Use 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
190 require '../loc_tools.pl';
191 unless (locales_enabled()) {
192     print("SKIPPED\n# locales not available\n"),exit;
193 }
194 eval { require POSIX; POSIX->import("locale_h") };
195 if ($@) {
196     print("SKIPPED\n# no POSIX\n"),exit;
197 }
198 my $utf8_locale = find_utf8_ctype_locale();
199 unless ($utf8_locale) {
200     print("SKIPPED\n# No UTF-8 locale available\n"),exit;
201 }
202 use warnings 'locale';
203 use locale;
204 setlocale(&POSIX::LC_CTYPE, "C");
205  "abc def" =~ /\b{wb}.*?/;
206  "abc def" =~ /\B{wb}.*?/;
207 setlocale(&POSIX::LC_CTYPE, $utf8_locale);
208  "abc def" =~ /\b{wb}.*?/;
209  "abc def" =~ /\B{wb}.*?/;
210 EXPECT
211 Use of \b{} or \B{} for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 16.
212 Use of \b{} or \B{} for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 16.
213 Use of \b{} or \B{} for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 17.
214 Use of \b{} or \B{} for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 17.
215 Use 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
218 eval { require POSIX; POSIX->import("locale_h") };
219 if ($@) {
220     print("SKIPPED\n# no POSIX\n"),exit;
221 }
222 no warnings 'experimental::regex_sets';
223 use warnings 'locale';
224 use locale;
225 setlocale(&POSIX::LC_CTYPE, "C");
226 "\N{KELVIN SIGN}" =~ /(?[ \N{KELVIN SIGN} ])/i;
227 "K" =~ /(?[ \N{KELVIN SIGN} ])/i;
228 "k" =~ /(?[ \N{KELVIN SIGN} ])/i;
229 ":" =~ /(?[ \: ])/;
230 no warnings 'locale';
231 EXPECT
232 Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 9.
233 Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 9.
234 Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 10.
235 Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 10.
236 Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 11.
237 Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 11.
238 Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 12.
239 Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 12.
240 ########
241 # NAME (?[ ]) in UTF-8 locale
242 require '../loc_tools.pl';
243 unless (locales_enabled()) {
244     print("SKIPPED\n# locales not available\n"),exit;
245 }
246 eval { require POSIX; POSIX->import("locale_h") };
247 if ($@) {
248     print("SKIPPED\n# no POSIX\n"),exit;
249 }
250 my $utf8_locale = find_utf8_ctype_locale();
251 unless ($utf8_locale) {
252     print("SKIPPED\n# No UTF-8 locale available\n"),exit;
253 }
254 no warnings 'experimental::regex_sets';
255 use warnings 'locale';
256 use locale;
257 setlocale(&POSIX::LC_CTYPE, $utf8_locale);
258 "\N{KELVIN SIGN}" =~ /(?[ \N{KELVIN SIGN} ])/i;
259 "K" =~ /(?[ \N{KELVIN SIGN} ])/i;
260 "k" =~ /(?[ \N{KELVIN SIGN} ])/i;
261 ":" =~ /(?[ \: ])/;
262 EXPECT