 ef8a6c6268
			
		
	
	ef8a6c6268
	
	
	
		
			
			This commit provides basic utility classes for the reftable library. Signed-off-by: Han-Wen Nienhuys <hanwen@google.com> Helped-by: Johannes Schindelin <johannes.schindelin@gmx.de> 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 "reftable-malloc.h"
 | |
| 
 | |
| #include "basics.h"
 | |
| #include "system.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();
 | |
| }
 |