Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Apr 2010 14:22:29 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r206898 - head/lib/libc/stdlib
Message-ID:  <201004201422.o3KEMTao050817@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Tue Apr 20 14:22:29 2010
New Revision: 206898
URL: http://svn.freebsd.org/changeset/base/206898

Log:
  Free() is not allowed to modify errno, remove safety brackets around it [1].
  Add small optimization, do not copy a string to the buffer that is
  to be freed immediately after.
  
  Noted by:	jh [1]
  Reviewed by:	jh
  MFC after:	2 weeks

Modified:
  head/lib/libc/stdlib/realpath.c

Modified: head/lib/libc/stdlib/realpath.c
==============================================================================
--- head/lib/libc/stdlib/realpath.c	Tue Apr 20 12:22:06 2010	(r206897)
+++ head/lib/libc/stdlib/realpath.c	Tue Apr 20 14:22:29 2010	(r206898)
@@ -84,12 +84,10 @@ realpath(const char * __restrict path, c
 		left_len = strlcpy(left, path + 1, sizeof(left));
 	} else {
 		if (getcwd(resolved, PATH_MAX) == NULL) {
-			strlcpy(resolved, ".", PATH_MAX);
-			if (m) {
-				serrno = errno;
+			if (m)
 				free(resolved);
-				errno = serrno;
-			}
+			else
+				strlcpy(resolved, ".", PATH_MAX);
 			return (NULL);
 		}
 		resolved_len = strlen(resolved);
@@ -168,11 +166,8 @@ realpath(const char * __restrict path, c
 				errno = serrno;
 				return (resolved);
 			}
-			if (m) {
-				serrno = errno;
+			if (m)
 				free(resolved);
-				errno = serrno;
-			}
 			return (NULL);
 		}
 		if (S_ISLNK(sb.st_mode)) {
@@ -184,11 +179,8 @@ realpath(const char * __restrict path, c
 			}
 			slen = readlink(resolved, symlink, sizeof(symlink) - 1);
 			if (slen < 0) {
-				if (m) {
-					serrno = errno;
+				if (m)
 					free(resolved);
-					errno = serrno;
-				}
 				return (NULL);
 			}
 			symlink[slen] = '\0';



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201004201422.o3KEMTao050817>