mirror of
https://github.com/git-for-windows/git.git
synced 2026-06-27 00:58:30 -05:00
pack-objects: widen delta-cache accounting to size_t
These three are a single accounting tuple (the globals tracking cumulative cached-delta bytes, plus the helper that compares them against an incoming delta size) and are latently 32-bit on Windows where unsigned long != size_t: a pack with many large cached deltas could wrap silently. The widening is internally consistent on its own: the additions and subtractions against delta_cache_size already come from size_t sources (DELTA_SIZE() returns size_t), and delta_cacheable()'s sole caller in try_delta() still passes unsigned long, which promotes. Prerequisite for dropping try_delta()'s cast_size_t_to_ulong() shims, which becomes possible once create_delta() and diff_delta() are widened in a later commit. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
@@ -260,8 +260,8 @@ static int exclude_promisor_objects_best_effort;
|
||||
|
||||
static int use_delta_islands;
|
||||
|
||||
static unsigned long delta_cache_size = 0;
|
||||
static unsigned long max_delta_cache_size = DEFAULT_DELTA_CACHE_SIZE;
|
||||
static size_t delta_cache_size = 0;
|
||||
static size_t max_delta_cache_size = DEFAULT_DELTA_CACHE_SIZE;
|
||||
static unsigned long cache_max_small_delta_size = 1000;
|
||||
|
||||
static unsigned long window_memory_limit = 0;
|
||||
@@ -2687,8 +2687,8 @@ struct unpacked {
|
||||
unsigned depth;
|
||||
};
|
||||
|
||||
static int delta_cacheable(unsigned long src_size, unsigned long trg_size,
|
||||
unsigned long delta_size)
|
||||
static int delta_cacheable(size_t src_size, size_t trg_size,
|
||||
size_t delta_size)
|
||||
{
|
||||
if (max_delta_cache_size && delta_cache_size + delta_size > max_delta_cache_size)
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user