Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: f4cc8ab9dba9f2cfac19bbb2194eff6266ccde70
      
https://github.com/Perl/perl5/commit/f4cc8ab9dba9f2cfac19bbb2194eff6266ccde70
  Author: David Mitchell <da...@iabyn.com>
  Date:   2022-07-09 (Sat, 09 Jul 2022)

  Changed paths:
    M pp_ctl.c
    M t/op/goto.t

  Log Message:
  -----------
  avoid SEGVs on goto &xs_sub

GH #19936

When the sub which is being left gets freed, like:

    sub foo { *foo = sub {}; goto &xs_sub }

it can leave PL_op as a NULL pointer while the XS sub is being executed.
My recent commit  v5.37.1-83-g58cf04199f, which fixed the value of
GIMME_V in such XS subs, made the problem more noticeable, since it
caused PL_op to always be accessed.

The fix is to defer the freeing of the old sub when goto'ing an XS sub.


  Commit: 8a4b911d06671a03e21054142ab2c27b15d5fd3e
      
https://github.com/Perl/perl5/commit/8a4b911d06671a03e21054142ab2c27b15d5fd3e
  Author: David Mitchell <da...@iabyn.com>
  Date:   2022-07-09 (Sat, 09 Jul 2022)

  Changed paths:
    M pod/perldelta.pod

  Log Message:
  -----------
  perldelta: add entry for 2 goto &xs_sub fixes


Compare: https://github.com/Perl/perl5/compare/a7304a688ff2...8a4b911d0667

Reply via email to