@@ -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;
}
@@ -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);
}