pack-objects(check_pack_inflate()): use size_t instead of unsigned long

`write_reuse_object()` learned to track its packed-object size as `size_t` in 606c192380 (odb, packfile: use size_t for streaming object sizes, 2026-05-08), but the comparison sink it feeds, `check_pack_inflate()`, still takes the expected decompressed size as `unsigned long`. The call site bridges the mismatch with `cast_size_t_to_ulong()`, which on Windows turns a >4 GiB object into an immediate die(). That function only uses `expect` once: as the right-hand side of a `stream.total_out == expect` equality test against zlib's counter. zlib's own `total_out` counter is `uLong` and is therefore still 32-bit-bound on Windows. Widening `expect` to `size_t` cannot fix that, but it is a strict improvement nonetheless: instead of dying outright, an oversized object now simply makes the equality fail and lets `write_reuse_object()` fall back to `write_no_reuse_object()`, which decompresses and re-deflates the content (and which the larger pack-objects widening series targets separately). Drop the `cast_size_t_to_ulong()` shim at the call site now that the receiving parameter speaks the same type as `entry_size`. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Johannes Schindelin committed Jun 15, 2026 at 11:52 UTC 1d43315b31906507b8e64758eb0723732cc3483a
1 file changed +2 -3
builtin/pack-objects.c
+2 -3
@@ -453,7 +453,7 @@ static int check_pack_inflate(struct packed_git *p,
453 struct pack_window **w_curs,
454 off_t offset,
455 off_t len,
456 - unsigned long expect)
456 + size_t expect)
457 {
458 git_zstream stream;
459 unsigned char fakebuf[4096], *in;
@@ -671,8 +671,7 @@ static off_t write_reuse_object(struct hashfile *f, struct object_entry *entry,
671 datalen -= entry->in_pack_header_size;
672
673 if (!pack_to_stdout && p->index_version == 1 &&
674 - check_pack_inflate(p, &w_curs, offset, datalen,
675 - cast_size_t_to_ulong(entry_size))) {
674 + check_pack_inflate(p, &w_curs, offset, datalen, entry_size)) {
675 error(_("corrupt packed object for %s"),
676 oid_to_hex(&entry->idx.oid));
677 unuse_pack(&w_curs);