X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=git-compat-util.h;h=12ce6590bb926de2d27eee9520dd2017dd34554e;hb=8e76c79f4a1e66ed8e371d1232e879f45141dce1;hp=0c98c9937df14bfa8be4f58cae84aa16029be883;hpb=c2f3bf071ee90b01f2d629921bb04c4f798f02fa;p=git.git diff --git a/git-compat-util.h b/git-compat-util.h index 0c98c993..12ce6590 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -1,6 +1,14 @@ #ifndef GIT_COMPAT_UTIL_H #define GIT_COMPAT_UTIL_H +#ifndef FLEX_ARRAY +#if defined(__GNUC__) && (__GNUC__ < 3) +#define FLEX_ARRAY 0 +#else +#define FLEX_ARRAY /* empty */ +#endif +#endif + #include #include #include @@ -63,6 +71,8 @@ extern char *gitstrcasestr(const char *haystack, const char *needle); static inline void *xmalloc(size_t size) { void *ret = malloc(size); + if (!ret && !size) + ret = malloc(1); if (!ret) die("Out of memory, malloc failed"); return ret; @@ -71,6 +81,8 @@ static inline void *xmalloc(size_t size) static inline void *xrealloc(void *ptr, size_t size) { void *ret = realloc(ptr, size); + if (!ret && !size) + ret = realloc(ptr, 1); if (!ret) die("Out of memory, realloc failed"); return ret; @@ -79,6 +91,8 @@ static inline void *xrealloc(void *ptr, size_t size) static inline void *xcalloc(size_t nmemb, size_t size) { void *ret = calloc(nmemb, size); + if (!ret && (!nmemb || !size)) + ret = calloc(1, 1); if (!ret) die("Out of memory, calloc failed"); return ret;