templates: {s} with one string hole and nothing else is a new string, not s itself - it was the one template that passed its string through (string() does), and code that wrote it as a copy kept what it then freed; the mark rides the callee, since escape analysis writes the call's uns; reseeded
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
a436cfbe35
commit
dd25267502
6 changed files with 29922 additions and 29729 deletions
6
changes/template-copy.md
Normal file
6
changes/template-copy.md
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
bump: patch
|
||||
type: fix
|
||||
**A template of one string hole is a new string.** `` `{s}` `` was `s` itself (`str()` passes a string
|
||||
through), so code that wrote it as a copy kept a pointer it then freed - ludic.ui's rule text named
|
||||
whatever reused the bytes. It now copies, where a template with any other part already made a new
|
||||
string; `str(s)` still passes through. No template in the game or the packages had a string as its lone hole.
|
||||
Loading…
Add table
Add a link
Reference in a new issue