summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@microsoft.com>2015-09-28 16:24:50 -0400
committerEdward Thomson <ethomson@edwardthomson.com>2015-10-05 22:59:36 +0200
commit4bc9b74c14cd2d37de12295cc6ebfd90274e222b (patch)
treed499a9cc1f02335f7894b9b7df6fbd7b2418896e
parenta99f33e9b05504ea5eccd9c9210cd4a9e8d11695 (diff)
downloadlibgit2-4bc9b74c14cd2d37de12295cc6ebfd90274e222b.tar.gz
GITERR_CHECK_ALLOC_ADDn: multi-arg adders
-rw-r--r--src/common.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/common.h b/src/common.h
index 6dca36fbd..7170df91a 100644
--- a/src/common.h
+++ b/src/common.h
@@ -208,6 +208,15 @@ GIT_INLINE(void) git__init_structure(void *structure, size_t len, unsigned int v
#define GITERR_CHECK_ALLOC_ADD(out, one, two) \
if (GIT_ADD_SIZET_OVERFLOW(out, one, two)) { return -1; }
+#define GITERR_CHECK_ALLOC_ADD3(out, one, two, three) \
+ if (GIT_ADD_SIZET_OVERFLOW(out, one, two) || \
+ GIT_ADD_SIZET_OVERFLOW(out, *(out), three)) { return -1; }
+
+#define GITERR_CHECK_ALLOC_ADD4(out, one, two, three, four) \
+ if (GIT_ADD_SIZET_OVERFLOW(out, one, two) || \
+ GIT_ADD_SIZET_OVERFLOW(out, *(out), three) || \
+ GIT_ADD_SIZET_OVERFLOW(out, *(out), four)) { return -1; }
+
/** Check for multiplicative overflow, failing if it would occur. */
#define GITERR_CHECK_ALLOC_MULTIPLY(out, nelem, elsize) \
if (GIT_MULTIPLY_SIZET_OVERFLOW(out, nelem, elsize)) { return -1; }