From 295ee1100b0bce881a00bdfbdb9492e2158d8a69 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Wed, 16 May 2018 15:30:59 +0300 Subject: libc: Temporary hack for sigaction For some reason doesn't work with NULL act, need to investigate more later. --- src/libc.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/libc.c b/src/libc.c index d8f60cf..96312a2 100644 --- a/src/libc.c +++ b/src/libc.c @@ -163,16 +163,20 @@ bionic_readdir_r(DIR *dirp, struct bionic_dirent *entry, struct bionic_dirent ** int bionic_sigaction(int sig, const struct bionic_sigaction *restrict act, struct bionic_sigaction *restrict oact) { - assert(act); + verbose("%d, %p, %p", sig, act, oact); - struct sigaction goact, gact = { - .sa_handler = act->_u._sa_handler, - .sa_mask = act->sa_mask, - .sa_flags = act->sa_flags, - .sa_restorer = act->sa_restorer, - }; + if (!act) + return 0; + + struct sigaction goact = {0}, gact = {0}; + if (act) { + gact.sa_handler = act->_u._sa_handler; + gact.sa_mask = act->sa_mask; + gact.sa_flags = act->sa_flags; + gact.sa_restorer = act->sa_restorer; + } - const int ret = sigaction(sig, &gact, &goact); + const int ret = sigaction(sig, (act ? &gact : NULL), (oact ? &goact : NULL)); if (oact) { oact->_u._sa_handler = goact.sa_handler; -- cgit v1.2.3