Annotation of src/lib/libc/stdlib/reallocarray.c, Revision 1.5
1.5 ! kamil 1: /* $NetBSD$ */
1.1 christos 2: /* $OpenBSD: reallocarray.c,v 1.1 2014/05/08 21:43:49 deraadt Exp $ */
1.3 christos 3:
4: /*-
5: * Copyright (c) 2015 The NetBSD Foundation, Inc.
6: * All rights reserved.
7: *
8: * This code is derived from software contributed to The NetBSD Foundation
9: * by Christos Zoulas.
1.1 christos 10: *
1.3 christos 11: * Redistribution and use in source and binary forms, with or without
12: * modification, are permitted provided that the following conditions
13: * are met:
14: * 1. Redistributions of source code must retain the above copyright
15: * notice, this list of conditions and the following disclaimer.
16: * 2. Redistributions in binary form must reproduce the above copyright
17: * notice, this list of conditions and the following disclaimer in the
18: * documentation and/or other materials provided with the distribution.
1.1 christos 19: *
1.3 christos 20: * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
21: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
24: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30: * POSSIBILITY OF SUCH DAMAGE.
1.1 christos 31: */
1.5 ! kamil 32:
1.1 christos 33: #include <sys/cdefs.h>
1.5 ! kamil 34: __RCSID("$NetBSD: reallocarray.c,v 1.4 2015/03/10 13:05:13 christos Exp $");
1.1 christos 35:
1.3 christos 36: #define _OPENBSD_SOURCE
1.1 christos 37: #include <errno.h>
38: #include <stdlib.h>
39:
40: void *
41: reallocarray(void *optr, size_t nmemb, size_t size)
42: {
1.4 christos 43: if (nmemb == 0 || size == 0)
44: return realloc(optr, 0);
45:
1.3 christos 46: int e = reallocarr(&optr, nmemb, size);
47:
48: if (e == 0)
49: return optr;
50: errno = e;
51: return NULL;
1.1 christos 52: }
CVSweb <webmaster@jp.NetBSD.org>