In the past, we've kept LC_NUMERIC in the C locale, because so much code
relies on the radix character being a dot. 5.27.9 added an enhancement
that checks if the current locale already has it be a dot. If so, it's
fine to keep the locale in that one.
The spot fixed by this commit didn't get updated to account for this
change.
(I realize that the docs also need to be updated; that will be in a
future commit)
/* Keep LC_NUMERIC in the C locale. This is for XS modules, so they don't
* have to worry about the radix being a non-dot. (Core operations that
* need the underlying locale change to it temporarily). */
- set_numeric_standard();
+ if (PL_numeric_standard) {
+ set_numeric_radix(0);
+ }
+ else {
+ set_numeric_standard();
+ }
#endif /* USE_LOCALE_NUMERIC */