summaryrefslogtreecommitdiffstats
path: root/compat_reallocarray.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2014-12-11 09:05:01 +0000
committerIngo Schwarze <schwarze@openbsd.org>2014-12-11 09:05:01 +0000
commit575d5203a792144787a6de364e55e778834ba89a (patch)
tree8a527c7e442c0b17dd20e41a67d528c048b9706a /compat_reallocarray.c
parentfc3906028aae342e30bbfed834f856692cc02f1e (diff)
downloadmandoc-575d5203a792144787a6de364e55e778834ba89a.tar.gz
sync to OpenBSD
Diffstat (limited to 'compat_reallocarray.c')
-rw-r--r--compat_reallocarray.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/compat_reallocarray.c b/compat_reallocarray.c
index 6e96a6ab..36ee47ab 100644
--- a/compat_reallocarray.c
+++ b/compat_reallocarray.c
@@ -6,7 +6,8 @@ int dummy;
#else
-/* $OpenBSD: malloc.c,v 1.158 2014/04/23 15:07:27 tedu Exp $ */
+/* $Id$ */
+/* $OpenBSD: reallocarray.c,v 1.2 2014/12/08 03:45:00 bcook Exp $ */
/*
* Copyright (c) 2008 Otto Moerbeek <otto@drijf.net>
*
@@ -22,12 +23,17 @@ int dummy;
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+
#include <sys/types.h>
#include <errno.h>
#include <stdint.h>
#include <stdlib.h>
-#define MUL_NO_OVERFLOW (1UL << (sizeof(size_t) * 4))
+/*
+ * This is sqrt(SIZE_MAX+1), as s1*s2 <= SIZE_MAX
+ * if both s1 < MUL_NO_OVERFLOW and s2 < MUL_NO_OVERFLOW
+ */
+#define MUL_NO_OVERFLOW ((size_t)1 << (sizeof(size_t) * 4))
void *
reallocarray(void *optr, size_t nmemb, size_t size)