diff options
| author | Sssnowyyy <78863999+Sssnowyyy@users.noreply.github.com> | 2026-11-02 11:29:14 -0500 |
|---|---|---|
| committer | Sssnowyyy <78863999+Sssnowyyy@users.noreply.github.com> | 2026-11-02 14:53:47 -0500 |
| commit | 8b0666b74868da8221d9e3ef3995f3a862ee24b6 (patch) | |
| tree | 5537f23ab1306475a2df29bda7637058a11d8501 /src/core/memory.cpp | |
| parent | bda49e810b5955bff8474e7b8f2b09eab51e9be2 (diff) | |
shader: restore the handle build depth when a build throws
BuildHandleProgram incremented g_handle_depth and decremented it at the end, so
a NotImplementedException from BuildHandleNode left the thread-local depth above
zero. That thread never cleared g_handle_slots again, and stale IR::Inst* keys
from an earlier program could match instructions of a later one (a freed
instruction's address can be reused). Do the decrement and the outermost clear in
SCOPE_EXIT.
Follow-up to e23b0f2fab.
Assisted-by: Claude Sonnet 5.5 (implementation and commit message)
Diffstat (limited to 'src/core/memory.cpp')
0 files changed, 0 insertions, 0 deletions
