summaryrefslogtreecommitdiff
path: root/src/lib/libc/stdlib/malloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libc/stdlib/malloc.c')
-rw-r--r--src/lib/libc/stdlib/malloc.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/lib/libc/stdlib/malloc.c b/src/lib/libc/stdlib/malloc.c
index 8b90bb5d57..3582d7980c 100644
--- a/src/lib/libc/stdlib/malloc.c
+++ b/src/lib/libc/stdlib/malloc.c
@@ -8,7 +8,7 @@
8 */ 8 */
9 9
10#if defined(LIBC_SCCS) && !defined(lint) 10#if defined(LIBC_SCCS) && !defined(lint)
11static char rcsid[] = "$OpenBSD: malloc.c,v 1.36 1999/09/16 19:06:06 deraadt Exp $"; 11static char rcsid[] = "$OpenBSD: malloc.c,v 1.37 1999/11/09 19:25:33 millert Exp $";
12#endif /* LIBC_SCCS and not lint */ 12#endif /* LIBC_SCCS and not lint */
13 13
14/* 14/*
@@ -1278,3 +1278,27 @@ realloc(void *ptr, size_t size)
1278 wrterror("out of memory.\n"); 1278 wrterror("out of memory.\n");
1279 return (r); 1279 return (r);
1280} 1280}
1281
1282void *
1283calloc(size_t num, size_t size)
1284{
1285 register void *r;
1286
1287 malloc_func = " in calloc():";
1288 THREAD_LOCK();
1289 if (malloc_active++) {
1290 wrtwarning("recursive call.\n");
1291 malloc_active--;
1292 return (0);
1293 }
1294 size *= num;
1295 r = imalloc(size);
1296 if (r && !malloc_zero)
1297 memset(r, 0, size)
1298 UTRACE(0, size, r);
1299 malloc_active--;
1300 THREAD_UNLOCK();
1301 if (malloc_xmalloc && !r)
1302 wrterror("out of memory.\n");
1303 return (r);
1304}