Follow-up to reviewing PRs #1068 and #932, both of whose bugs are already
fixed on master:
- #1068 (call_out handles below the allocation counter rejected as
invalid) was fixed by #1220 with a regression test in
testsuite/single/tests/efuns/remove_call_out.lpc. Document the
guaranteed semantics in call_out.md / remove_call_out.md: a handle
stays valid until it fires or is removed, regardless of newer
call_outs; 0 is never a valid handle.
- #932 (an error thrown from valid_read during #include handling left
compile_file's reentrancy guard set, wedging all future loads) is
fixed by the compiler front-end rewrite: compile_file's scope guard
restores all compiler state and clears the guard on exception
unwinding. Document in valid_read.md that the apply runs mid-compile
for #include checks, must not trigger another compile, and that a
thrown error aborts only that compilation.
Claude-Session: https://claude.ai/code/session_01JRvUnh3x5MYPWPk2MiiUS2
Co-authored-by: Claude <noreply@anthropic.com>