pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
The pair must move together because `find_deltas()` passes `&mem_usage` to `try_delta()`: widening either alone breaks the type match. `mem_usage` accumulates per-object byte counts already computed in `size_t` (`SIZE()` and `sizeof_delta_index()` reach here through `free_unpacked()`, now `size_t`), and was the last 32-bit-on-Windows narrowing point in the delta-window memory accounting chain. With this commit, that chain uses `size_t` consistently except for `sizeof_delta_index()`'s still-narrow return, whose value is bounded by `create_delta_index()`'s entries cap. `window_memory_limit` (config-driven via `git_config_ulong()`) stays `unsigned long`: it is only compared against `mem_usage` and promotes. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>seen
parent
445aa3cd59
commit
161889b4c8
|
|
@ -2787,7 +2787,7 @@ size_t oe_get_size_slow(struct packing_data *pack,
|
|||
}
|
||||
|
||||
static int try_delta(struct unpacked *trg, struct unpacked *src,
|
||||
unsigned max_depth, unsigned long *mem_usage)
|
||||
unsigned max_depth, size_t *mem_usage)
|
||||
{
|
||||
struct object_entry *trg_entry = trg->entry;
|
||||
struct object_entry *src_entry = src->entry;
|
||||
|
|
@ -2974,7 +2974,7 @@ static void find_deltas(struct object_entry **list, unsigned *list_size,
|
|||
{
|
||||
uint32_t i, idx = 0, count = 0;
|
||||
struct unpacked *array;
|
||||
unsigned long mem_usage = 0;
|
||||
size_t mem_usage = 0;
|
||||
|
||||
CALLOC_ARRAY(array, window);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue