From abcaa2e4627d2f979ad0f6e15863bbc9cf4f7e18 Mon Sep 17 00:00:00 2001 From: emaste Date: Tue, 18 Sep 2012 13:13:28 +0000 Subject: [PATCH] MFC r240412: According to a clarification at http://austingroupbugs.net/view.php?id=503 ptsname may set errno, so avoid saving and restoring errno across the function. PR: standards/171572 Approved by: re Sponsored by: ADARA Networks git-svn-id: svn://svn.freebsd.org/base/releng/9.1@240648 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- lib/libc/stdlib/ptsname.3 | 3 ++- lib/libc/stdlib/ptsname.c | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/libc/stdlib/ptsname.3 b/lib/libc/stdlib/ptsname.3 index 48da3bd8..8e8ec07d 100644 --- a/lib/libc/stdlib/ptsname.3 +++ b/lib/libc/stdlib/ptsname.3 @@ -102,7 +102,8 @@ of the slave device on success; otherwise a pointer is returned. .Sh ERRORS The -.Fn grantpt +.Fn grantpt , +.Fn ptsname and .Fn unlockpt functions may fail and set diff --git a/lib/libc/stdlib/ptsname.c b/lib/libc/stdlib/ptsname.c index 40b140de..3e4d4c09 100644 --- a/lib/libc/stdlib/ptsname.c +++ b/lib/libc/stdlib/ptsname.c @@ -77,7 +77,6 @@ ptsname(int fildes) { static char pt_slave[sizeof _PATH_DEV + SPECNAMELEN] = _PATH_DEV; char *ret = NULL; - int sverrno = errno; /* Make sure fildes points to a master device. */ if (__isptmaster(fildes) != 0) @@ -87,7 +86,6 @@ ptsname(int fildes) sizeof pt_slave - (sizeof _PATH_DEV - 1)) != NULL) ret = pt_slave; -done: /* Make sure ptsname() does not overwrite errno. */ - errno = sverrno; +done: return (ret); } -- 2.42.0