libobs: Don't call signal handlers that got removed

It's possible for one signal handler to disconnect another during signal_handler_signal, which could result in crashes when the disconnected signal handler is called with a potentially freed data pointer due to other cleanup.
master
Richard Stanway 2015-10-13 01:07:27 +02:00
parent 6c15d814bf
commit 90a45a0ca0
1 changed files with 2 additions and 1 deletions

View File

@ -253,7 +253,8 @@ void signal_handler_signal(signal_handler_t *handler, const char *signal,
for (size_t i = 0; i < sig->callbacks.num; i++) {
struct signal_callback *cb = sig->callbacks.array+i;
cb->callback(cb->data, params);
if (!cb->remove)
cb->callback(cb->data, params);
}
for (size_t i = sig->callbacks.num; i > 0; i--) {