diff options
author | Paul Pluzhnikov <ppluzhnikov@google.com> | 2015-08-11 23:40:00 -0700 |
---|---|---|
committer | Paul Pluzhnikov <ppluzhnikov@google.com> | 2015-08-11 23:40:00 -0700 |
commit | 84895dca70f972df3842fb88f7b33b5d695cc599 (patch) | |
tree | ade512ca77f27f09e58435878cec1c640dfaed88 | |
parent | 5011051da35a91577d262040791cbe5a868cffbd (diff) | |
download | glibc-84895dca70f972df3842fb88f7b33b5d695cc599.tar.gz glibc-84895dca70f972df3842fb88f7b33b5d695cc599.tar.xz glibc-84895dca70f972df3842fb88f7b33b5d695cc599.zip |
Fix BZ #18086 -- nice resets errno to 0.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | posix/tst-nice.c | 11 | ||||
-rw-r--r-- | sysdeps/posix/nice.c | 6 |
4 files changed, 22 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog index af87ce2ace..24e029eda7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2015-08-11 Paul Pluzhnikov <ppluzhnikov@google.com> + + [BZ #18086] + * sysdeps/posix/nice.c (nice): Restore old errno. + * posix/tst-nice.c (do_test): Add test for BZ #18086. + 2015-08-10 Ondrej Bilka <neleai@seznam.cz> * sysdeps/powerpc/powerpc64/multiarch/stpcpy.c: Fix ifunc. diff --git a/NEWS b/NEWS index 1b11ce73d3..c6a2c2c324 100644 --- a/NEWS +++ b/NEWS @@ -9,8 +9,9 @@ Version 2.23 * The following bugs are resolved with this release: - 16517, 16519, 17905, 18265, 18480, 18525, 18618, 18647, 18661, 18674, - 18778, 18781, 18787, 18789, 18790. + 16517, 16519, 17905, 18086, 18265, 18480, 18525, 18618, 18647, 18661, + 18674, 18778, 18781, 18787, 18789, 18790. + Version 2.22 diff --git a/posix/tst-nice.c b/posix/tst-nice.c index ac78d6056f..814891deb6 100644 --- a/posix/tst-nice.c +++ b/posix/tst-nice.c @@ -56,8 +56,17 @@ do_test (void) return 1; } - printf ("PASS: nice(%d) from %d return: %d\n", incr, old, ret); + /* BZ #18086. Make sure we don't reset errno. */ + errno = EBADF; + nice (0); + if (errno != EBADF) + { + printf ("FAIL: errno = %i, but wanted EBADF (%i)\n", errno, EBADF); + return 1; + } + + printf ("PASS: nice(%d) from %d return: %d\n", incr, old, ret); return 0; } diff --git a/sysdeps/posix/nice.c b/sysdeps/posix/nice.c index 42bb99b7e1..8f6daaffbf 100644 --- a/sysdeps/posix/nice.c +++ b/sysdeps/posix/nice.c @@ -36,16 +36,16 @@ nice (int incr) { if (errno != 0) return -1; - else - __set_errno (save); } result = __setpriority (PRIO_PROCESS, 0, prio + incr); if (result == -1) { if (errno == EACCES) - errno = EPERM; + __set_errno (EPERM); return -1; } + + __set_errno (save); return __getpriority (PRIO_PROCESS, 0); } |