summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2024-05-25 11:54:14 -0400
committerTavian Barnes <tavianator@tavianator.com>2024-05-25 11:54:14 -0400
commit598422e7678a719b37cc4221c637b840f4e13fcc (patch)
tree320093f34c26879f63b5567936161d51e34355c3
parent2b72ce2ac0908dae4a39d30b91a28106928168b0 (diff)
downloadbfs-598422e7678a719b37cc4221c637b840f4e13fcc.tar.xz
sighook: Allow sigunhook(NULL)
-rw-r--r--src/ctx.c4
-rw-r--r--src/sighook.c4
2 files changed, 5 insertions, 3 deletions
diff --git a/src/ctx.c b/src/ctx.c
index fac501a..0f619c2 100644
--- a/src/ctx.c
+++ b/src/ctx.c
@@ -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;