diff options
author | Jonathan Nieder <jrnieder@gmail.com> | 2010-10-11 04:59:26 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-02-10 22:47:56 +0100 |
commit | 1368f65002bf39fdde7dd736a75ae35475184371 (patch) | |
tree | cb0d57165c5b1f710bb5e6499fa322185a8deb2f /wrapper.c | |
parent | Merge branch 'maint-1.7.0' into maint (diff) | |
download | git-1368f65002bf39fdde7dd736a75ae35475184371.tar.xz git-1368f65002bf39fdde7dd736a75ae35475184371.zip |
compat: helper for detecting unsigned overflow
The idiom (a + b < a) works fine for detecting that an unsigned
integer has overflowed, but a more explicit
unsigned_add_overflows(a, b)
might be easier to read.
Define such a macro, expanding roughly to ((a) < UINT_MAX - (b)).
Because the expansion uses each argument only once outside of sizeof()
expressions, it is safe to use with arguments that have side effects.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'wrapper.c')
-rw-r--r-- | wrapper.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -53,7 +53,7 @@ void *xmalloc(size_t size) void *xmallocz(size_t size) { void *ret; - if (size + 1 < size) + if (unsigned_add_overflows(size, 1)) die("Data too large to fit into virtual memory space."); ret = xmalloc(size + 1); ((char*)ret)[size] = 0; |