Branch: refs/heads/maint-5.42
  Home:   https://github.com/Perl/perl5
  Commit: b9698291c8cd44955a0834e6a71c0c4aa8dbed90
      
https://github.com/Perl/perl5/commit/b9698291c8cd44955a0834e6a71c0c4aa8dbed90
  Author: Tony Cook <[email protected]>
  Date:   2026-02-01 (Sun, 01 Feb 2026)

  Changed paths:
    M win32/perllib.c

  Log Message:
  -----------
  win32: build without threads but still with implicit sys

Discovered while trying to test #17601 since the build failed with:

perllib.c(62): error C2039: 'cur_tid': is not a member of 'interp_intern'
...\perl\win32\win32.h(566): note: see declaration of 'interp_intern'
perllib.c(68): error C2039: 'cur_tid': is not a member of 'interp_intern'
...\perl\win32\win32.h(566): note: see declaration of 'interp_intern'

(cherry picked from commit 7b87a86b61a2855bab6d6c5324ebe230d24c548c)


  Commit: cec790a1d64b13edbe78d6bbd19a716248b0b566
      
https://github.com/Perl/perl5/commit/cec790a1d64b13edbe78d6bbd19a716248b0b566
  Author: David Mitchell <[email protected]>
  Date:   2026-02-01 (Sun, 01 Feb 2026)

  Changed paths:
    M op.c
    M t/op/ref.t

  Log Message:
  -----------
  propagate correct ref context to both ?: branches

GH #18669

In something like

    @{ expr } = ...

the expression is expected to return an array ref. If the expression
is something like $h{foo}, then the helem op needs to know both that:
- it is in lvalue context, so should autovivify the foo element if not
  present;
- it is in array ref context, so it should autovivify the value to an
  empty array ref, rather than just to undef.

The function Perl_doref() is used to propagate this ref context at
compile time, e.g. by setting the OPf_MOD and OPpDEREF_AV flags on the
OP_HELEM op.

My commit v5.31.1-87-ge9b0092a10 made this function non-recursive
(so that deep expressions wouldn't SEGV during compilation), but
introduced a bug when the expression included the ternary condition
operator, '?:'.

In particular, since '?:' is the only OP where doref() needs to recurse
down *two* branches, I made the function just iterate down the tree, and
then have special handling for OP_COND_EXPR. This involved, once having
finished iterating down the tree, to work back up the tree looking for
OP_COND_EXPR nodes, and if found, iterate back down the second branch.

This had a fatal flaw: a 'type' variable indicated what context to
apply. For example in @{$h{expr}} = ..., type would start off as
OP_RV2AV, but as the tree was walked, would change to OP_HELEM and then
to OP_RV2HV. When walking back up the tree, this value wasn't being restored.

The specific bug in the ticket boiled down to something like

    @{ $cond ? $h{p} : $h{q} } = ...;

where the correct OPpDEREF_AV flag was being set on the first helem op,
but an incorrect OPpDEREF_HV on the second.

Since I can't think of anything better, the fix in this commit restores
some limited recursion to doref(). Namely, for an OP_COND_EXPR op, it
now recurses down that op's first branch, then after it returns,
iterates as normal down the second branch.

Thus extremely deeply nested ternary code like:

    @{ $c1 ? $c2 ? $c3 ? .... } ...

could start to SEGV during compilation again.

(cherry picked from commit 39d060cbfc89badb10092e880731f7c99d8076bb)


  Commit: 6e6cdf51c79e681f03aa5934c3ea0fd1e2898d1e
      
https://github.com/Perl/perl5/commit/6e6cdf51c79e681f03aa5934c3ea0fd1e2898d1e
  Author: Karl Williamson <[email protected]>
  Date:   2026-02-06 (Fri, 06 Feb 2026)

  Changed paths:
    M Configure
    M Porting/Glossary
    M pod/perldelta.pod

  Log Message:
  -----------
  Configure: Allow LC_ALL syntax override

Fixes #22992

The problem here had to do with cross-compilation.  There was no way to
override Perl's calculation of how LC_ALL is represented.  I had not put
one in because it is hard to get it right manually.  But this doesn't
work in cross-compilation; it's better to have a difficult-to-get-right
way than no way at all.  Porting/Glossary is updated to have an example.

(cherry picked from commit 18b791793b12fa84e016331f73ac891909b5fab9)


Compare: https://github.com/Perl/perl5/compare/f19d2c340c06...6e6cdf51c79e

To unsubscribe from these emails, change your notification settings at 
https://github.com/Perl/perl5/settings/notifications

Reply via email to