From b3d4ba56642640a2560e0b2e91028eabd75e9f71 Mon Sep 17 00:00:00 2001 From: deraadt <> Date: Thu, 16 Sep 1999 19:06:06 +0000 Subject: [PATCH] use writev() where possible --- src/lib/libc/stdlib/malloc.c | 41 +++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/src/lib/libc/stdlib/malloc.c b/src/lib/libc/stdlib/malloc.c index e75c7cdb..8b90bb5d 100644 --- a/src/lib/libc/stdlib/malloc.c +++ b/src/lib/libc/stdlib/malloc.c @@ -8,7 +8,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char rcsid[] = "$OpenBSD: malloc.c,v 1.35 1999/02/03 03:58:05 d Exp $"; +static char rcsid[] = "$OpenBSD: malloc.c,v 1.36 1999/09/16 19:06:06 deraadt Exp $"; #endif /* LIBC_SCCS and not lint */ /* @@ -37,15 +37,16 @@ static char rcsid[] = "$OpenBSD: malloc.c,v 1.35 1999/02/03 03:58:05 d Exp $"; */ #define SOME_JUNK 0xd0 /* as in "Duh" :-) */ +#include +#include +#include +#include #include #include #include #include #include #include -#include -#include -#include /* * The basic parameters you can tweak. @@ -363,10 +364,18 @@ wrterror(p) char *p; { char *q = " error: "; - write(2, __progname, strlen(__progname)); - write(2, malloc_func, strlen(malloc_func)); - write(2, q, strlen(q)); - write(2, p, strlen(p)); + struct iovec iov[4]; + + iov[0].iov_base = __progname; + iov[0].iov_len = strlen(__progname); + iov[1].iov_base = malloc_func; + iov[1].iov_len = strlen(malloc_func); + iov[2].iov_base = q; + iov[2].iov_len = strlen(q); + iov[3].iov_base = p; + iov[3].iov_len = strlen(p); + writev(STDERR_FILENO, iov, 4); + suicide = 1; #ifdef MALLOC_STATS if (malloc_stats) @@ -380,14 +389,22 @@ wrtwarning(p) char *p; { char *q = " warning: "; + struct iovec iov[4]; + if (malloc_abort) wrterror(p); else if (malloc_silent) return; - write(2, __progname, strlen(__progname)); - write(2, malloc_func, strlen(malloc_func)); - write(2, q, strlen(q)); - write(2, p, strlen(p)); + + iov[0].iov_base = __progname; + iov[0].iov_len = strlen(__progname); + iov[1].iov_base = malloc_func; + iov[1].iov_len = strlen(malloc_func); + iov[2].iov_base = q; + iov[2].iov_len = strlen(q); + iov[3].iov_base = p; + iov[3].iov_len = strlen(p); + writev(STDERR_FILENO, iov, 4); } #ifdef MALLOC_STATS