if we aren't setting signal handlers, don't try to take ownership of signal atomic #1666

pull/1669/head
nick black 3 years ago committed by Nick Black
parent c49749a1bd
commit d8238da8c6

@ -67,7 +67,7 @@ int drop_signals(void* nc){
}
pthread_mutex_unlock(&lock);
if(ret){
fprintf(stderr, "Couldn't drop signals with %p (had %p)\n", nc, expected);
fprintf(stderr, "Signals weren't registered for %p (had %p)\n", nc, expected);
}
return ret;
}
@ -105,10 +105,13 @@ int setup_signals(void* vnc, bool no_quit_sigs, bool no_winch_sig,
notcurses* nc = vnc;
void* expected = NULL;
struct sigaction sa;
// we expect NULL (nothing registered), and want to register nc
if(!atomic_compare_exchange_strong(&signal_nc, &expected, nc)){
loginfo(nc, "%p is already registered for signals (provided %p)\n", expected, nc);
return -1;
// don't register ourselves if we don't intend to set up signal handlers
if(!no_winch_sig || !no_quit_sigs){
// we expect NULL (nothing registered), and want to register nc
if(!atomic_compare_exchange_strong(&signal_nc, &expected, nc)){
loginfo(nc, "%p is already registered for signals (provided %p)\n", expected, nc);
return -1;
}
}
if(!no_winch_sig){
memset(&sa, 0, sizeof(sa));

Loading…
Cancel
Save