diff options
author | emaste <emaste@FreeBSD.org> | 2012-09-12 17:54:09 +0000 |
---|---|---|
committer | emaste <emaste@FreeBSD.org> | 2012-09-12 17:54:09 +0000 |
commit | ed3f0cd13dfb75dc788c906aa7ff44ade3f88e0e (patch) | |
tree | 386a529a3fff37d9694452ff5de2f15c0569a4ed | |
parent | 87d02085acfe4d673982fe13086761818cc076a4 (diff) | |
download | FreeBSD-src-ed3f0cd13dfb75dc788c906aa7ff44ade3f88e0e.zip FreeBSD-src-ed3f0cd13dfb75dc788c906aa7ff44ade3f88e0e.tar.gz |
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
-rw-r--r-- | lib/libc/stdlib/ptsname.3 | 3 | ||||
-rw-r--r-- | 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 48da3bd..8e8ec07 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 40b140d..3e4d4c0 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); } |