Fix bug 7462 - Non-standard SA_RESETHAND is used in ...lib/tevent/tevent_sig
authorJeremy Allison <jra@samba.org>
Tue, 2 Aug 2011 18:49:46 +0000 (20:49 +0200)
committerKarolin Seeger <kseeger@samba.org>
Tue, 2 Aug 2011 18:49:46 +0000 (20:49 +0200)
Make SA_RESETHAND conditional on its existance.

Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Mon Aug  1 22:03:45 CEST 2011 on sn-devel-104
(cherry picked from commit 0c67efdd68b9808542c090b9fd9920e4e37d85d0)

lib/replace/system/wait.h
lib/tevent/testsuite.c
lib/tevent/tevent_signal.c

index 79583ad2abcd17d48612ed8f628160c776b62597..497f5597a727d3cfa575cf7f5445a60d9b6291a3 100644 (file)
 #include <setjmp.h>
 #endif
 
-#ifndef SA_RESETHAND
-#define SA_RESETHAND SA_ONESHOT
-#endif
-
 #if !defined(HAVE_SIG_ATOMIC_T_TYPE)
 typedef int sig_atomic_t;
 #endif
index f9aca91aa1c39f2b6e3edc37115fac141ef4cc7a..41f734572162063090b4d970a99aaed30a9b7d4d 100644 (file)
@@ -101,7 +101,9 @@ static bool test_event_context(struct torture_context *test,
 #ifdef SA_RESTART
        se1 = event_add_signal(ev_ctx, ev_ctx, SIGALRM, SA_RESTART, count_handler, &alarm_count);
 #endif
+#ifdef SA_RESETHAND
        se2 = event_add_signal(ev_ctx, ev_ctx, SIGALRM, SA_RESETHAND, count_handler, &alarm_count);
+#endif
 #ifdef SA_SIGINFO
        se3 = event_add_signal(ev_ctx, ev_ctx, SIGUSR1, SA_SIGINFO, count_handler, &info_count);
 #endif
index 45f65cf6dddf9e3f45cb1554c8e80c75474302ab..2e9f20a67152db93689719ac84d49deb469a033c 100644 (file)
@@ -355,16 +355,20 @@ int tevent_common_check_signal(struct tevent_context *ev)
                                                    (void*)&sig_state->sig_info[i][ofs], 
                                                    se->private_data);
                                }
+#ifdef SA_RESETHAND
                                if (se->sa_flags & SA_RESETHAND) {
                                        talloc_free(se);
                                }
+#endif
                                continue;
                        }
 #endif
                        se->handler(ev, se, i, count, NULL, se->private_data);
+#ifdef SA_RESETHAND
                        if (se->sa_flags & SA_RESETHAND) {
                                talloc_free(se);
                        }
+#endif
                }
 
 #ifdef SA_SIGINFO