Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
Copyright 2020 Google LLC
 | 
						|
 | 
						|
Use of this source code is governed by a BSD-style
 | 
						|
license that can be found in the LICENSE file or at
 | 
						|
https://developers.google.com/open-source/licenses/bsd
 | 
						|
*/
 | 
						|
 | 
						|
#include "system.h"
 | 
						|
#include "reftable-malloc.h"
 | 
						|
 | 
						|
#include "basics.h"
 | 
						|
 | 
						|
static void *(*reftable_malloc_ptr)(size_t sz);
 | 
						|
static void *(*reftable_realloc_ptr)(void *, size_t);
 | 
						|
static void (*reftable_free_ptr)(void *);
 | 
						|
 | 
						|
void *reftable_malloc(size_t sz)
 | 
						|
{
 | 
						|
	if (reftable_malloc_ptr)
 | 
						|
		return (*reftable_malloc_ptr)(sz);
 | 
						|
	return malloc(sz);
 | 
						|
}
 | 
						|
 | 
						|
void *reftable_realloc(void *p, size_t sz)
 | 
						|
{
 | 
						|
	if (reftable_realloc_ptr)
 | 
						|
		return (*reftable_realloc_ptr)(p, sz);
 | 
						|
	return realloc(p, sz);
 | 
						|
}
 | 
						|
 | 
						|
void reftable_free(void *p)
 | 
						|
{
 | 
						|
	if (reftable_free_ptr)
 | 
						|
		reftable_free_ptr(p);
 | 
						|
	else
 | 
						|
		free(p);
 | 
						|
}
 | 
						|
 | 
						|
void *reftable_calloc(size_t sz)
 | 
						|
{
 | 
						|
	void *p = reftable_malloc(sz);
 | 
						|
	memset(p, 0, sz);
 | 
						|
	return p;
 | 
						|
}
 | 
						|
 | 
						|
void reftable_set_alloc(void *(*malloc)(size_t),
 | 
						|
			void *(*realloc)(void *, size_t), void (*free)(void *))
 | 
						|
{
 | 
						|
	reftable_malloc_ptr = malloc;
 | 
						|
	reftable_realloc_ptr = realloc;
 | 
						|
	reftable_free_ptr = free;
 | 
						|
}
 | 
						|
 | 
						|
int hash_size(uint32_t id)
 | 
						|
{
 | 
						|
	switch (id) {
 | 
						|
	case 0:
 | 
						|
	case GIT_SHA1_FORMAT_ID:
 | 
						|
		return GIT_SHA1_RAWSZ;
 | 
						|
	case GIT_SHA256_FORMAT_ID:
 | 
						|
		return GIT_SHA256_RAWSZ;
 | 
						|
	}
 | 
						|
	abort();
 | 
						|
}
 |