aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Richardson <arichardson@FreeBSD.org>2021-01-20 09:56:01 +0000
committerAlex Richardson <arichardson@FreeBSD.org>2021-01-20 09:56:01 +0000
commitcef1942711624c6cf1d237118531cfad9ade05ac (patch)
tree20d3fa57d807e906150fb6019a4adf9bd84e966f
parent7e99c034f788128c7d168eaf27af9a3acaa06163 (diff)
downloadsrc-cef1942711624c6cf1d237118531cfad9ade05ac.tar.gz
src-cef1942711624c6cf1d237118531cfad9ade05ac.zip
libc: Fix null pointer arithmetic warning in mergesort
This file has other questionable code and "optimizations" (such as copying one int at a time) that are probably no longer useful, so it might make sense to replace it with a different implementation at some point. Reviewed By: jhb Differential Revision: https://reviews.freebsd.org/D28134
-rw-r--r--lib/libc/stdlib/merge.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/libc/stdlib/merge.c b/lib/libc/stdlib/merge.c
index 3a47e424e4da..853d6ae93fcb 100644
--- a/lib/libc/stdlib/merge.c
+++ b/lib/libc/stdlib/merge.c
@@ -52,7 +52,7 @@ __FBSDID("$FreeBSD$");
* (The default is pairwise merging.)
*/
-#include <sys/types.h>
+#include <sys/param.h>
#include <errno.h>
#include <stdlib.h>
@@ -97,9 +97,7 @@ static void insertionsort(u_char *, size_t, size_t, cmp_t);
* boundaries.
*/
/* Assumption: PSIZE is a power of 2. */
-#define EVAL(p) (u_char **) \
- ((u_char *)0 + \
- (((u_char *)p + PSIZE - 1 - (u_char *) 0) & ~(PSIZE - 1)))
+#define EVAL(p) (u_char **)roundup2((uintptr_t)p, PSIZE)
#ifdef I_AM_MERGESORT_B
int mergesort_b(void *, size_t, size_t, cmp_t);