blob: 72d322ee3739f488f6c10cfc94b65d69eecd9c76 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
use strict;
use warnings;
# This file tests interactions with locale and threads
BEGIN {
chdir 't' if -d 't';
require './test.pl';
set_up_inc('../lib');
require './loc_tools.pl';
skip_all("No locales") unless locales_enabled();
skip_all_without_config('useithreads');
$| = 1;
}
SKIP: { # perl #127708
my @locales = grep { $_ !~ / ^ C \b | POSIX /x } find_locales('LC_MESSAGES');
skip("No valid locale to test with", 1) unless @locales;
# reset the locale environment
local @ENV{'LANG', (grep /^LC_/, keys %ENV)};
local $ENV{LC_MESSAGES} = $locales[0];
# We're going to try with all possible error numbers on this platform
my $error_count = keys(%!) + 1;
print fresh_perl("
use threads;
use strict;
use warnings;
my \$errnum = 1;
my \@threads = map +threads->create(sub {
sleep 0.1;
for (1..5_000) {
\$errnum = (\$errnum + 1) % $error_count;
\$! = \$errnum;
# no-op to trigger stringification
next if \"\$!\" eq \"\";
}
}), (0..1);
\$_->join for splice \@threads;",
{}
);
pass("Didn't segfault");
}
done_testing;
|