MEM-041: sniff โ€” error-path resource leaks in PATCH blob-write and POST commit

Two sniff error paths leak a resource because a bare call() sits between an acquisition and its release. write_blob (PATCH.c:229) FILECreate's an fd then call(FILEFeedAll, fd, data) โ€” a write failure early-returns and leaks the open fd. POSTCommit (POST.c:2651, the core be post commit-emission) KEEPPackOpen's a keeper pack (fd + mmaps + heap) then a bare call(post_feed_empty_tree, ...) early-returns on KEEPPackFeed failure, leaking the whole pack. Both are reachable on a real I/O / pack error, missed by the happy-path suite. From the MEM sweep.

Issues

A bare call() between acquire and release leaks on its error return.

Blockers

None; sniff-internal. Use the close-before-return idiom already standard in this dir (capture result, release unconditionally, then check) โ€” the same MEM-026 pattern.

Planned

Release the fd / pack on the error return before propagating.