summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rpmio/rpmsq.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/rpmio/rpmsq.c b/rpmio/rpmsq.c
index 0eb3ca37a..1d0e73a6c 100644
--- a/rpmio/rpmsq.c
+++ b/rpmio/rpmsq.c
@@ -70,10 +70,12 @@ static void rpmsqHandler(int signum, siginfo_t * info, void * context)
int save = errno;
if (sigismember(&rpmsqActive, signum)) {
- rpmsig sig = NULL;
- (void) sigaddset(&rpmsqCaught, signum);
- if (rpmsigGet(signum, &sig))
- memcpy(&sig->siginfo, info, sizeof(*info));
+ if (!sigismember(&rpmsqCaught, signum)) {
+ rpmsig sig = NULL;
+ (void) sigaddset(&rpmsqCaught, signum);
+ if (rpmsigGet(signum, &sig))
+ memcpy(&sig->siginfo, info, sizeof(*info));
+ }
}
errno = save;