| /* | |
| * Various trivial helper wrappers around standard functions | |
| */ | |
| #include "cache.h" | |
| /* | |
| * There's no pack memory to release - but stay close to the Git | |
| * version so wrap this away: | |
| */ | |
| static inline void release_pack_memory(size_t size __maybe_unused, | |
| int flag __maybe_unused) | |
| { | |
| } | |
| char *xstrdup(const char *str) | |
| { | |
| char *ret = strdup(str); | |
| if (!ret) { | |
| release_pack_memory(strlen(str) + 1, -1); | |
| ret = strdup(str); | |
| if (!ret) | |
| die("Out of memory, strdup failed"); | |
| } | |
| return ret; | |
| } | |
| void *xrealloc(void *ptr, size_t size) | |
| { | |
| void *ret = realloc(ptr, size); | |
| if (!ret && !size) | |
| ret = realloc(ptr, 1); | |
| if (!ret) { | |
| release_pack_memory(size, -1); | |
| ret = realloc(ptr, size); | |
| if (!ret && !size) | |
| ret = realloc(ptr, 1); | |
| if (!ret) | |
| die("Out of memory, realloc failed"); | |
| } | |
| return ret; | |
| } |