Module Name: src Committed By: christos Date: Fri May 13 23:11:00 UTC 2011
Modified Files: src/lib/libc/stdlib: jemalloc.c malloc.c Log Message: don't let readlink trash errno.; To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/lib/libc/stdlib/jemalloc.c cvs rdiff -u -r1.52 -r1.53 src/lib/libc/stdlib/malloc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libc/stdlib/jemalloc.c diff -u src/lib/libc/stdlib/jemalloc.c:1.22 src/lib/libc/stdlib/jemalloc.c:1.23 --- src/lib/libc/stdlib/jemalloc.c:1.22 Sat Feb 26 18:27:49 2011 +++ src/lib/libc/stdlib/jemalloc.c Fri May 13 19:11:00 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: jemalloc.c,v 1.22 2011/02/26 23:27:49 njoly Exp $ */ +/* $NetBSD: jemalloc.c,v 1.23 2011/05/13 23:11:00 christos Exp $ */ /*- * Copyright (C) 2006,2007 Jason Evans <jas...@freebsd.org>. @@ -118,7 +118,7 @@ #include <sys/cdefs.h> /* __FBSDID("$FreeBSD: src/lib/libc/stdlib/malloc.c,v 1.147 2007/06/15 22:00:16 jasone Exp $"); */ -__RCSID("$NetBSD: jemalloc.c,v 1.22 2011/02/26 23:27:49 njoly Exp $"); +__RCSID("$NetBSD: jemalloc.c,v 1.23 2011/05/13 23:11:00 christos Exp $"); #ifdef __FreeBSD__ #include "libc_private.h" @@ -3325,6 +3325,7 @@ ssize_t linklen; char buf[PATH_MAX + 1]; const char *opts = ""; + int serrno; malloc_mutex_lock(&init_lock); if (malloc_initialized) { @@ -3371,6 +3372,7 @@ /* Get runtime configuration. */ switch (i) { case 0: + serrno = errno; if ((linklen = readlink("/etc/malloc.conf", buf, sizeof(buf) - 1)) != -1) { /* @@ -3380,6 +3382,7 @@ buf[linklen] = '\0'; opts = buf; } else { + errno = serrno; /* No configuration specified. */ buf[0] = '\0'; opts = buf; Index: src/lib/libc/stdlib/malloc.c diff -u src/lib/libc/stdlib/malloc.c:1.52 src/lib/libc/stdlib/malloc.c:1.53 --- src/lib/libc/stdlib/malloc.c:1.52 Sun Feb 3 17:56:53 2008 +++ src/lib/libc/stdlib/malloc.c Fri May 13 19:11:00 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: malloc.c,v 1.52 2008/02/03 22:56:53 christos Exp $ */ +/* $NetBSD: malloc.c,v 1.53 2011/05/13 23:11:00 christos Exp $ */ /* * ---------------------------------------------------------------------------- @@ -90,7 +90,7 @@ #include <sys/cdefs.h> #include "extern.h" #if defined(LIBC_SCCS) && !defined(lint) -__RCSID("$NetBSD: malloc.c,v 1.52 2008/02/03 22:56:53 christos Exp $"); +__RCSID("$NetBSD: malloc.c,v 1.53 2011/05/13 23:11:00 christos Exp $"); #endif /* LIBC_SCCS and not lint */ int utrace(const char *, void *, size_t); @@ -467,9 +467,12 @@ for (i = 0; i < 3; i++) { if (i == 0) { + int serrno = errno; j = readlink("/etc/malloc.conf", b, sizeof b - 1); - if (j <= 0) + if (j == -1) { + errno = serrno; continue; + } b[j] = '\0'; p = b; } else if (i == 1 && issetugid() == 0) {