On the exception path of a try/finally block, release in-scope string variables before re-raising so that heap-allocated string buffers are freed even when exceptions unwind through the frame. After each StringRelease the stack slot is zeroed so that nested finally handlers see a nil pointer and take the no-op release path, preventing double-free on deep exception chains. Adds FCurrentBlock field and EmitExcPathArcCleanup to TCodeGenQBE. Two new codegen tests verify position and zeroing behaviour. |
||
|---|---|---|
| .. | ||
| src | ||
| project.xml | ||