diff options
author | René Scharfe <l.s.r@web.de> | 2017-01-22 18:52:13 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-01-23 11:02:36 -0800 |
commit | 3ca869940994866796edf9e53e52d80f82c3c04c (patch) | |
tree | f142a9dd9059877bc251038bed73f131f89f4733 /git-compat-util.h | |
parent | 04ee8b875b96c096c479132adca02fa734c3fa96 (diff) | |
download | git-3ca869940994866796edf9e53e52d80f82c3c04c.tar.gz |
add QSORT_S
Add the macro QSORT_S, a convenient wrapper for qsort_s() that infers
the size of the array elements and dies on error.
Basically all possible errors are programming mistakes (passing NULL as
base of a non-empty array, passing NULL as comparison function,
out-of-bounds accesses), so terminating the program should be acceptable
for most callers.
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-compat-util.h')
-rw-r--r-- | git-compat-util.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/git-compat-util.h b/git-compat-util.h index f706744e6a..f46d40e4a4 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -994,6 +994,11 @@ int git_qsort_s(void *base, size_t nmemb, size_t size, #define qsort_s git_qsort_s #endif +#define QSORT_S(base, n, compar, ctx) do { \ + if (qsort_s((base), (n), sizeof(*(base)), compar, ctx)) \ + die("BUG: qsort_s() failed"); \ +} while (0) + #ifndef REG_STARTEND #error "Git requires REG_STARTEND support. Compile with NO_REGEX=NeedsStartEnd" #endif |