diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2024-05-25 11:54:14 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2024-05-25 11:54:14 -0400 |
commit | 598422e7678a719b37cc4221c637b840f4e13fcc (patch) | |
tree | 320093f34c26879f63b5567936161d51e34355c3 /src | |
parent | 2b72ce2ac0908dae4a39d30b91a28106928168b0 (diff) | |
download | bfs-598422e7678a719b37cc4221c637b840f4e13fcc.tar.xz |
sighook: Allow sigunhook(NULL)
Diffstat (limited to 'src')
-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; |