Skip to content

Conversation

@khwilliamson
Copy link
Contributor

Unicode-defined properties are kept in inversion lists in read-only memory. Attempting to modify them will result in a segfault. The new Unicode 16.0 has some empty properties that need to be inverted before use in some cases. This situation has not occurred before. The inversion code that gets called presumes it has a modifiable SV and inverts in-place. This segfaults.

Normally, no inversion is needed, and the properties are used as-is, and no problem arises.

The solution here is to create a clone, and then invert that.

  • This set of changes does not require a perldelta entry.

Unicode-defined properties are kept in inversion lists in read-only
memory.  Attempting to modify them will result in a segfault.  The new
Unicode 16.0 has some empty properties that need to be inverted before
use in some cases.  This situation has not occurred before.  The
inversion code that gets called presumes it has a modifiable SV and
inverts in-place.  This segfaults.

Normally, no inversion is needed, and the properties are used as-is, and
no problem arises.

The solution here is to create a clone, and then invert that.
@khwilliamson khwilliamson merged commit 60e9e3b into Perl:blead Mar 18, 2025
34 checks passed
@khwilliamson khwilliamson deleted the clone_invlist branch April 23, 2025 11:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants