]>
Commit | Line | Data |
---|---|---|
ef8a6c62 HWN |
1 | /* |
2 | Copyright 2020 Google LLC | |
3 | ||
4 | Use of this source code is governed by a BSD-style | |
5 | license that can be found in the LICENSE file or at | |
6 | https://developers.google.com/open-source/licenses/bsd | |
7 | */ | |
8 | ||
e3a3f5ed | 9 | #include "system.h" |
ef8a6c62 HWN |
10 | #include "reftable-malloc.h" |
11 | ||
12 | #include "basics.h" | |
ef8a6c62 HWN |
13 | |
14 | static void *(*reftable_malloc_ptr)(size_t sz); | |
15 | static void *(*reftable_realloc_ptr)(void *, size_t); | |
16 | static void (*reftable_free_ptr)(void *); | |
17 | ||
18 | void *reftable_malloc(size_t sz) | |
19 | { | |
20 | if (reftable_malloc_ptr) | |
21 | return (*reftable_malloc_ptr)(sz); | |
22 | return malloc(sz); | |
23 | } | |
24 | ||
25 | void *reftable_realloc(void *p, size_t sz) | |
26 | { | |
27 | if (reftable_realloc_ptr) | |
28 | return (*reftable_realloc_ptr)(p, sz); | |
29 | return realloc(p, sz); | |
30 | } | |
31 | ||
32 | void reftable_free(void *p) | |
33 | { | |
34 | if (reftable_free_ptr) | |
35 | reftable_free_ptr(p); | |
36 | else | |
37 | free(p); | |
38 | } | |
39 | ||
b4ff12c8 | 40 | void *reftable_calloc(size_t nelem, size_t elsize) |
ef8a6c62 | 41 | { |
b4ff12c8 | 42 | size_t sz = st_mult(nelem, elsize); |
ef8a6c62 HWN |
43 | void *p = reftable_malloc(sz); |
44 | memset(p, 0, sz); | |
45 | return p; | |
46 | } | |
47 | ||
48 | void reftable_set_alloc(void *(*malloc)(size_t), | |
49 | void *(*realloc)(void *, size_t), void (*free)(void *)) | |
50 | { | |
51 | reftable_malloc_ptr = malloc; | |
52 | reftable_realloc_ptr = realloc; | |
53 | reftable_free_ptr = free; | |
54 | } | |
55 | ||
56 | int hash_size(uint32_t id) | |
57 | { | |
58 | switch (id) { | |
59 | case 0: | |
60 | case GIT_SHA1_FORMAT_ID: | |
61 | return GIT_SHA1_RAWSZ; | |
62 | case GIT_SHA256_FORMAT_ID: | |
63 | return GIT_SHA256_RAWSZ; | |
64 | } | |
65 | abort(); | |
66 | } |