This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Latch LC_NUMERIC during critical sections
authorKarl Williamson <khw@cpan.org>
Tue, 13 Feb 2018 20:12:50 +0000 (13:12 -0700)
committerKarl Williamson <khw@cpan.org>
Sun, 18 Feb 2018 22:44:23 +0000 (15:44 -0700)
commit49d7d366441813aa7301b1a437e302372f04f31a
tree619c3271adeeab23fe9ea25c9517ebf9807cc1fe
parent398eeea9cd1c8a9b95329a3eca8be6a2a5903ac5
Latch LC_NUMERIC during critical sections

It is possible for operations on threaded perls which don't 'use locale'
to still change the locale.  This happens when calling
POSIX::localeconv() and I18N::Langinfo(), and in earlier perls, it can
happen for other operations when perl has been initialized with the
environment causing the various locale categories to not have a uniform
locale.

This commit causes the areas where the locale for this category should
predictably be in one or the other state to be a critical section where
another thread can't interrupt and change it.  This is a separate
mutex, so that only these particular operations will be held up.
dist/ExtUtils-ParseXS/lib/perlxs.pod
embedvar.h
intrpvar.h
makedef.pl
perl.h
perlapi.h
perlvars.h
sv.c
vutil.c