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) {

Reply via email to