Fix pthread_sigmask() to return correct error values.
Before that, it returned -1 on error and set errno (not Posix) After the patch, it returns the error code and leaves errno untouched.
This commit is contained in:
parent
1f6f493963
commit
8f8b5310d2
2 changed files with 15 additions and 1 deletions
|
@ -1688,7 +1688,17 @@ extern int __rt_sigprocmask(int, const sigset_t *, sigset_t *, size_t);
|
||||||
|
|
||||||
int pthread_sigmask(int how, const sigset_t *set, sigset_t *oset)
|
int pthread_sigmask(int how, const sigset_t *set, sigset_t *oset)
|
||||||
{
|
{
|
||||||
return __rt_sigprocmask(how, set, oset, _NSIG / 8);
|
/* pthread_sigmask must return the error code, but the syscall
|
||||||
|
* will set errno instead and return 0/-1
|
||||||
|
*/
|
||||||
|
int ret, old_errno = errno;
|
||||||
|
|
||||||
|
ret = __rt_sigprocmask(how, set, oset, _NSIG / 8);
|
||||||
|
if (ret < 0)
|
||||||
|
ret = errno;
|
||||||
|
|
||||||
|
errno = old_errno;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,10 @@ Differences between current and Android 2.1:
|
||||||
in /etc/resolv.conf. (resolv.conf is already ignored, so the latter
|
in /etc/resolv.conf. (resolv.conf is already ignored, so the latter
|
||||||
is a no-op for actual functionality.)
|
is a no-op for actual functionality.)
|
||||||
|
|
||||||
|
- fix pthread_sigmask() to properly return an error code without touching
|
||||||
|
errno. Previous implementation returned -1 on error, setting errno, which
|
||||||
|
is not Posix compliant.
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Differences between Android 2.1 and 2.0.1:
|
Differences between Android 2.1 and 2.0.1:
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue