]> git.ipfire.org Git - thirdparty/git.git/blobdiff - xdiff/xmacros.h
xdiff: introduce XDL_ALLOC_ARRAY()
[thirdparty/git.git] / xdiff / xmacros.h
index 2809a28ca960147c285bc5a224ed377a0964663a..9fd3c5da91a9caf0b59d507832127b403e9d9c80 100644 (file)
@@ -34,7 +34,6 @@
 #define XDL_ADDBITS(v,b)       ((v) + ((v) >> (b)))
 #define XDL_MASKBITS(b)                ((1UL << (b)) - 1)
 #define XDL_HASHLONG(v,b)      (XDL_ADDBITS((unsigned long)(v), b) & XDL_MASKBITS(b))
-#define XDL_PTRFREE(p) do { if (p) { xdl_free(p); (p) = NULL; } } while (0)
 #define XDL_LE32_PUT(p, v) \
 do { \
        unsigned char *__p = (unsigned char *) (p); \
@@ -50,5 +49,10 @@ do { \
                ((unsigned long) __p[2]) << 16 | ((unsigned long) __p[3]) << 24; \
 } while (0)
 
+/* Allocate an array of nr elements, returns NULL on failure */
+#define XDL_ALLOC_ARRAY(p, nr)                         \
+       ((p) = SIZE_MAX / sizeof(*(p)) >= (size_t)(nr)  \
+               ? xdl_malloc((nr) * sizeof(*(p)))       \
+               : NULL)
 
 #endif /* #if !defined(XMACROS_H) */