diff options
| author | Patrick Steinhardt <ps@pks.im> | 2019-02-21 12:13:59 +0100 |
|---|---|---|
| committer | Patrick Steinhardt <ps@pks.im> | 2019-02-21 12:28:02 +0100 |
| commit | b63396b75fe26afa3b27259c0d13dd7bc13b53ba (patch) | |
| tree | 35feccd200b172e876d660b309bb216f4515df88 /src/stdalloc.c | |
| parent | 9eb098d8614bdd0365140f6614441465123ce903 (diff) | |
| download | libgit2-b63396b75fe26afa3b27259c0d13dd7bc13b53ba.tar.gz | |
allocators: move standard allocator into subdirectory
Right now, our two allocator implementations are scattered around
the tree in "stdalloc.h" and "win32/w32_crtdbg_stacktrace.h".
Start grouping them together in a single directory "allocators/",
similar to how e.g. our streams are organized.
Diffstat (limited to 'src/stdalloc.c')
| -rw-r--r-- | src/stdalloc.c | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/src/stdalloc.c b/src/stdalloc.c deleted file mode 100644 index c4938e32b..000000000 --- a/src/stdalloc.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (C) the libgit2 contributors. All rights reserved. - * - * This file is part of libgit2, distributed under the GNU GPL v2 with - * a Linking Exception. For full terms see the included COPYING file. - */ - -#include "stdalloc.h" - -static void *stdalloc__malloc(size_t len, const char *file, int line) -{ - void *ptr = malloc(len); - - GIT_UNUSED(file); - GIT_UNUSED(line); - - if (!ptr) git_error_set_oom(); - return ptr; -} - -static void *stdalloc__calloc(size_t nelem, size_t elsize, const char *file, int line) -{ - void *ptr = calloc(nelem, elsize); - - GIT_UNUSED(file); - GIT_UNUSED(line); - - if (!ptr) git_error_set_oom(); - return ptr; -} - -static char *stdalloc__strdup(const char *str, const char *file, int line) -{ - char *ptr = strdup(str); - - GIT_UNUSED(file); - GIT_UNUSED(line); - - if (!ptr) git_error_set_oom(); - return ptr; -} - -static char *stdalloc__strndup(const char *str, size_t n, const char *file, int line) -{ - size_t length = 0, alloclength; - char *ptr; - - length = p_strnlen(str, n); - - if (GIT_ADD_SIZET_OVERFLOW(&alloclength, length, 1) || - !(ptr = stdalloc__malloc(alloclength, file, line))) - return NULL; - - if (length) - memcpy(ptr, str, length); - - ptr[length] = '\0'; - - return ptr; -} - -static char *stdalloc__substrdup(const char *start, size_t n, const char *file, int line) -{ - char *ptr; - size_t alloclen; - - if (GIT_ADD_SIZET_OVERFLOW(&alloclen, n, 1) || - !(ptr = stdalloc__malloc(alloclen, file, line))) - return NULL; - - memcpy(ptr, start, n); - ptr[n] = '\0'; - return ptr; -} - -static void *stdalloc__realloc(void *ptr, size_t size, const char *file, int line) -{ - void *new_ptr = realloc(ptr, size); - - GIT_UNUSED(file); - GIT_UNUSED(line); - - if (!new_ptr) git_error_set_oom(); - return new_ptr; -} - -static void *stdalloc__reallocarray(void *ptr, size_t nelem, size_t elsize, const char *file, int line) -{ - size_t newsize; - - if (GIT_MULTIPLY_SIZET_OVERFLOW(&newsize, nelem, elsize)) - return NULL; - - return stdalloc__realloc(ptr, newsize, file, line); -} - -static void *stdalloc__mallocarray(size_t nelem, size_t elsize, const char *file, int line) -{ - return stdalloc__reallocarray(NULL, nelem, elsize, file, line); -} - -static void stdalloc__free(void *ptr) -{ - free(ptr); -} - -int git_stdalloc_init_allocator(git_allocator *allocator) -{ - allocator->gmalloc = stdalloc__malloc; - allocator->gcalloc = stdalloc__calloc; - allocator->gstrdup = stdalloc__strdup; - allocator->gstrndup = stdalloc__strndup; - allocator->gsubstrdup = stdalloc__substrdup; - allocator->grealloc = stdalloc__realloc; - allocator->greallocarray = stdalloc__reallocarray; - allocator->gmallocarray = stdalloc__mallocarray; - allocator->gfree = stdalloc__free; - return 0; -} |
