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

Reply via email to