mirror of
https://github.com/nodejs/node.git
synced 2026-11-09 15:11:11 -05:00
add()/addEntrySync() advanced the central-directory offset and adopted the new entry into memory before the final directory rewrite. If that rewrite failed (ENOSPC/EIO after the member bytes were already written), the in-memory state and the on-disk archive were left diverged and half-updated, with no restore, corrupting the next add(). Wrap the rewrite: on failure, restore the previous offset and directory entry and rewrite the original directory back, leaving the archive and handle exactly as before the call, then rethrow. Signed-off-by: Philipp Dunkel <pip@pipobscure.com> PR-URL: https://github.com/nodejs/node/pull/65016 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>