diff --git a/posix/tst-nice.c b/posix/tst-nice.c index ac78d60..3b9eb55 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 = %d != EBADF\n", errno); + 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 42bb99b..4d05c70 100644 --- a/sysdeps/posix/nice.c +++ b/sysdeps/posix/nice.c @@ -36,8 +36,6 @@ nice (int incr) { if (errno != 0) return -1; - else - __set_errno (save); } result = __setpriority (PRIO_PROCESS, 0, prio + incr); @@ -47,5 +45,7 @@ nice (int incr) errno = EPERM; return -1; } + + __set_errno (save); return __getpriority (PRIO_PROCESS, 0); }