We need to allocate a "big" block of memory in paint_alloc(). The exact size does not really matter. But the pool size has no relation with commit-slab. Stop using that macro here. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- shallow.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shallow.c b/shallow.c index 8100dfd..2512ed3 100644 --- a/shallow.c +++ b/shallow.c @@ -431,6 +431,8 @@ void remove_nonexistent_theirs_shallow(struct shallow_info *info) define_commit_slab(ref_bitmap, uint32_t *); +#define POOL_SIZE (512 * 1024) + struct paint_info { struct ref_bitmap ref_bitmap; unsigned nr_bits; @@ -447,9 +449,9 @@ static uint32_t *paint_alloc(struct paint_info *info) if (!info->pool_count || info->free + size > info->end) { info->pool_count++; REALLOC_ARRAY(info->pools, info->pool_count); - info->free = xmalloc(COMMIT_SLAB_SIZE); + info->free = xmalloc(POOL_SIZE); info->pools[info->pool_count - 1] = info->free; - info->end = info->free + COMMIT_SLAB_SIZE; + info->end = info->free + POOL_SIZE; } p = info->free; info->free += size; -- 2.8.2.524.g6ff3d78