[Perl/perl5] e25d38: Verify whether a shared KEY came from PL_strtab be...

[email protected] (Richard Leach via perl5-changes)
Newsgroups perl.perl5.changes
Message-ID <Perl/perl5/push/refs/heads/blead/[email protected]>
  Branch: refs/heads/blead
  Home:   https://github.com/Perl/perl5
  Commit: e25d382dc080b3650485725b8ba89f4b64160917
      https://github.com/Perl/perl5/commit/e25d382dc080b3650485725b8ba89f4b64160917
  Author: Richard Leach <[email protected]>
  Date:   2026-08-18 (Tue, 18 Aug 2026)

  Changed paths:
    M hv.c

  Log Message:
  -----------
  Verify whether a shared KEY came from PL_strtab before bumping refcount

https://github.com/Perl/perl5/commit/823fa88ebd51f2c7d55e978d5881cf33e1e64508
attempted to avoid a seemingly-unnecessary call to `share_hek_flags()`
when inserting a shared HEK into a hash. (Bumping the refcount instead.)

The underlying assumption was that the shared HEK - being a shared HEK -
must already be in the current interpreter's `PL_strtab`.

However, thread-unsafe XS code may pass a HEK, shared in one thread's
`PL_strtab`, to a different thread. `share_hek_flags()` covers over
any unsafe/lack of thread context handling, but directly bumping the
underlying refcount acts on the originating thread's `PL_strtab`,
not the receiving thread's version.

This commit adds a pointer-comparison walk of the relevant bucket
in the _current_ `PL_strtab` to check if the shared HEK is present
and falls back to `share_hek_flags()` if not.



To unsubscribe from these emails, change your notification settings at https://github.com/Perl/perl5/settings/notifications
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.