diff options
-rw-r--r-- | src/ctx.c | 4 | ||||
-rw-r--r-- | src/sighook.c | 4 |
2 files changed, 5 insertions, 3 deletions
@@ -229,9 +229,7 @@ static int bfs_ctx_fclose(struct bfs_ctx *ctx, struct bfs_ctx_file *ctx_file) { error = errno; } - if (ctx_file->hook) { - sigunhook(ctx_file->hook); - } + sigunhook(ctx_file->hook); // Close the CFILE, except for stdio streams, which are closed later if (cfile != ctx->cout && cfile != ctx->cerr) { diff --git a/src/sighook.c b/src/sighook.c index ff5b96f..ece8147 100644 --- a/src/sighook.c +++ b/src/sighook.c @@ -584,6 +584,10 @@ done: } void sigunhook(struct sighook *hook) { + if (!hook) { + return; + } + mutex_lock(&sigmutex); struct rcu *rcu = hook->sig ? &rcu_sighooks : &rcu_exithooks; |