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
parent
6c15d814bf
commit
90a45a0ca0
|
@ -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--) {
|
||||
|
|
Loading…
Reference in New Issue