diff options
-rw-r--r-- | rpmio/rpmsq.c | 10 |
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; |