MEM-016: ULOGOpen* leak the booked log map on scratch-alloc failure (dog/ULOG.c)

Now
DONE

ULOGOpenBooked and ULOGOpenRO first FILEBook/FILEBookRO the log into *data (mmap + fd held), then call(ulog_idx_alloc_anon, &tmp, 1024); the call() macro returns immediately on failure without FILEUnBook(*data), so when the 16 KB anon mmap (or 32-byte calloc) inside fails under memory pressure the booked map and its fd leak for the process lifetime. Every other error path in both functions unbooks *data only the call() skips it. The goal is to unbook before returning on that path.

Issues

Single call() bypasses the function's own cleanup.

Blockers

None. Reachable on any RW/RO open under mmap/commit pressure.

Planned

Expand the call() into a checked allocate-then-unbook.