You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 017c67a
Browse filesBrowse the repository at this point in the historyBrowse files
Two P2 review findings from Codex:
1. Exclude buffered writers from the no-op-dispose allowlist. StreamWriter /
BinaryWriter FLUSH buffered output on Dispose, so a never-disposed writer
field can leave even an in-memory backing missing buffered data — a real
correctness bug, not a managed-memory-only no-op. IsNoOpDisposeWrapper now
allows only the read-only adapters StreamReader / BinaryReader, whose Dispose
just discards a read-ahead buffer and closes the (in-memory) backing.
2. Don't bail the whole method on an explicit throw inside a `using (existingLocal)`
body. Threading a non-null bodyOnThrow makes the ThrowStatementSyntax case
return false (it refuses a non-null onThrow — a throw inside a try might be
caught), which skipped the method's entire flow analysis and lost UNRELATED
leaks. The using-local release is now gated on the body having no explicit
escaping throw; otherwise it falls through to the plain lowering (method stays
analysed). Routing using-throws through the release would need invasive
onThrow-is-unconditional threading — deferred and documented.
Docs/fixtures updated to readers-only + the explicit-throw caveat. Selftests:
oracle 31/31, corpus 29/29, ruff clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019846YSZ35c7CdkWQ1qX5gm
0 commit comments