Branch: refs/heads/blead Home: https://github.com/Perl/perl5 Commit: ee65b7b266a0446c127ba31ae7857283d6f689a1 https://github.com/Perl/perl5/commit/ee65b7b266a0446c127ba31ae7857283d6f689a1 Author: Karl Williamson <k...@cpan.org> Date: 2023-08-08 (Tue, 08 Aug 2023)
Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- locale.c: Revamp S_stdize_locale() We are now able to parse and construct non-uniform LC_ALL strings. A big part of this function was trying to deal with these, but now that can be farmed out. It's now extremely unlikely this function will now actually change anything, based on recent field experience. To save copying that therefore won't likely ever be needed, this function now returns its input if unchanged, and a mortalized copy if it unlikely does need to be changed. That means it no longer needs a buffer reserved for it. The input is going to be the static global buffer pointed to by the return of setlocale(). That means calls to this function need to be protected by mutexes in threaded systems (the same as before this commit), and the result safely copied during the critical section. Commit: a75a079d91fbe58c9941f2918697cef26b67b42d https://github.com/Perl/perl5/commit/a75a079d91fbe58c9941f2918697cef26b67b42d Author: Karl Williamson <k...@cpan.org> Date: 2023-08-08 (Tue, 08 Aug 2023) Changed paths: M embedvar.h M intrpvar.h M locale.c M makedef.pl M perl.c M sv.c Log Message: ----------- Rename the buffer in S_less_dicey_locale It was reusing the buffer formerly used by S_stdize_locale(), but now its only use is from this function, so name it accordingly. Commit: c24d173bff1fc5753447aebf630f43f993abe4a4 https://github.com/Perl/perl5/commit/c24d173bff1fc5753447aebf630f43f993abe4a4 Author: Karl Williamson <k...@cpan.org> Date: 2023-08-08 (Tue, 08 Aug 2023) Changed paths: M locale.c Log Message: ----------- S_stdize_locale() Rmv testing for spurious '=' This code had been added to counteract occasional cases of improper syntax in a locale string. Other fixes to the locale handling have resulted in those cases not now showing up. It was never clear if the changes that code made to the locale name were actually the right thing to do. Now, we have the ability to correctly parse locale strings on all platforms tested on. If there is a problem with a platform, the parsing discovers it and returns an error, which stdize_locale() checks for and also returns an error if found, and so on back up the line to the user calling code. Commit: 4b99cd024b585d715ae7210288b527baf393d21c https://github.com/Perl/perl5/commit/4b99cd024b585d715ae7210288b527baf393d21c Author: Karl Williamson <k...@cpan.org> Date: 2023-08-08 (Tue, 08 Aug 2023) Changed paths: M embed.fnc M embed.h M locale.c M proto.h Log Message: ----------- Compile stdize_setlocale() only if requested This very old function has been whittled down to just looking for newlines in returned locales. Those just haven't come up in platforms we have tested on in recent years. Therefore, this is extra work on most, or perhaps all platforms. Should a platform show that this is still needed, its hints file can be changed to add a Configure option. As a result parse_LC_ALL_string is used in more places. Commit: 28b5b3c676dc75040bf10fe0b770069fbae25df0 https://github.com/Perl/perl5/commit/28b5b3c676dc75040bf10fe0b770069fbae25df0 Author: Karl Williamson <k...@cpan.org> Date: 2023-08-08 (Tue, 08 Aug 2023) Changed paths: M hints/aix.sh M locale.c Log Message: ----------- Properly handle broken setlocale(LC_ALL, NULL) Early AIX versions could return a truncated value in this case. https://www.ibm.com/support/pages/apar/IV22097 Tests were skipped as a result by 59b4d2932ceb16662879bca2a22315c3597276ae. This commit adds an easy workaround for this bug, changes the AIX hints file to enable it; the next commit will revert the test skipping. Commit: 093823b6f4997e9d9eb557750de1d972756a5e2e https://github.com/Perl/perl5/commit/093823b6f4997e9d9eb557750de1d972756a5e2e Author: Karl Williamson <k...@cpan.org> Date: 2023-08-08 (Tue, 08 Aug 2023) Changed paths: M lib/locale.t M t/lib/warnings/regexec M t/run/locale.t Log Message: ----------- Revert "AIX: skip some locale tests" This reverts commit 59b4d2932ceb16662879bca2a22315c3597276ae. which was a temporary fix for 5.38.0. And now a workaround is in place for the defective libc implementation. Commit: 52c13c26a9d508eb8624bda52c733d7d15f36496 https://github.com/Perl/perl5/commit/52c13c26a9d508eb8624bda52c733d7d15f36496 Author: Karl Williamson <k...@cpan.org> Date: 2023-08-08 (Tue, 08 Aug 2023) Changed paths: M locale.c Log Message: ----------- S_stdize_locale: Set errno if fails Commit: 736723ad1add1bbeea59f479640eedfe6ed39d4a https://github.com/Perl/perl5/commit/736723ad1add1bbeea59f479640eedfe6ed39d4a Author: Karl Williamson <k...@cpan.org> Date: 2023-08-08 (Tue, 08 Aug 2023) Changed paths: M locale.c Log Message: ----------- locale.c: Create STDIZED_SETLOCALE_LOCK Its best to use a mutex associated with the operation. This creates one for stdized_setlocale(), which is just an alias for another mutex. Compare: https://github.com/Perl/perl5/compare/a2718f2804e7...736723ad1add