mirror of
https://github.com/git/git.git
synced 2026-08-09 01:21:47 +00:00
patch-delta: use size_t for sizes
`patch_delta()` takes the source and delta sizes by value and writes
back the reconstructed target size through an `unsigned long *`. That
datatype cannot represent a value that exceeds 4 GiB on systems where
`unsigned long` is 32-bit (notably 64-bit Windows builds), though, even
though the delta encoding itself, the on-disk layout, and the in-memory
buffers happily carry such sizes. A `size_t` companion to
`get_delta_hdr_size()`, `get_delta_hdr_size_sz()`, was introduced in
17fa077596 (delta, packfile: use size_t for delta header sizes,
2026-05-08) precisely so that `patch_delta()` could be widened without
changing the on-the-wire decoding helper's signature.
Widen `patch_delta()`'s three size parameters to `size_t` and switch
its internal use of `get_delta_hdr_size()` to the `_sz` variant.
Then propagate the wider type through the callers.
Assisted-by: Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
8ea69373a4
commit
33afe87338
@@ -1964,10 +1964,8 @@ void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset,
|
||||
(uintmax_t)curpos, p->pack_name);
|
||||
data = NULL;
|
||||
} else {
|
||||
unsigned long sz;
|
||||
data = patch_delta(base, base_size, delta_data,
|
||||
delta_size, &sz);
|
||||
size = sz;
|
||||
delta_size, &size);
|
||||
|
||||
/*
|
||||
* We could not apply the delta; warn the user, but
|
||||
|
||||
Reference in New Issue
Block a user