summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2012-10-05 23:13:51 +0000
committerSteve Huston <shuston@riverace.com>2012-10-05 23:13:51 +0000
commitfc03d8090e768ef44527ec3c090790f712a2942b (patch)
tree9771fc0632be15a3c4ee1bc5cfc1cad31ad1ba17
parentcade776c76856bde6736a3bb3b330dd4ef604a37 (diff)
downloadATCD-fc03d8090e768ef44527ec3c090790f712a2942b.tar.gz
ChangeLogTag:Fri Oct 5 23:09:40 UTC 2012 Steve Huston <shuston@riverace.com>
-rw-r--r--ACE/ace/Sig_Handler.cpp6
-rw-r--r--ACE/ace/Sig_Handler.inl5
-rw-r--r--ACE/ace/WFMO_Reactor.cpp25
-rw-r--r--ACE/tests/Bug_2368_Regression_Test.cpp33
4 files changed, 33 insertions, 36 deletions
diff --git a/ACE/ace/Sig_Handler.cpp b/ACE/ace/Sig_Handler.cpp
index 7f9d35ce4c7..2bef74cc372 100644
--- a/ACE/ace/Sig_Handler.cpp
+++ b/ACE/ace/Sig_Handler.cpp
@@ -52,6 +52,12 @@ sig_atomic_t ACE_Sig_Handler::sig_pending_ = 0;
ACE_ALLOC_HOOK_DEFINE(ACE_Sig_Handler)
+ACE_Sig_Handler::ACE_Sig_Handler (void)
+{
+ for (int s = 1; s < ACE_NSIG; ++s)
+ ACE_Sig_Handler::signal_handlers_[s] = 0;
+}
+
ACE_Sig_Handler::~ACE_Sig_Handler (void)
{
for (int s = 1; s < ACE_NSIG; ++s)
diff --git a/ACE/ace/Sig_Handler.inl b/ACE/ace/Sig_Handler.inl
index 89427780d98..e35cfa5c26d 100644
--- a/ACE/ace/Sig_Handler.inl
+++ b/ACE/ace/Sig_Handler.inl
@@ -2,11 +2,6 @@
//
// $Id$
-ACE_INLINE
-ACE_Sig_Handler::ACE_Sig_Handler (void)
-{
-}
-
ACE_INLINE int
ACE_Sig_Handler::in_range (int signum)
{
diff --git a/ACE/ace/WFMO_Reactor.cpp b/ACE/ace/WFMO_Reactor.cpp
index ab826cc5eb4..c906e041f89 100644
--- a/ACE/ace/WFMO_Reactor.cpp
+++ b/ACE/ace/WFMO_Reactor.cpp
@@ -1313,19 +1313,9 @@ ACE_WFMO_Reactor::close (void)
// This will unregister all handles
this->handler_rep_.close ();
- return 0;
-}
-
-ACE_WFMO_Reactor::~ACE_WFMO_Reactor (void)
-{
- // Assumption: No threads are left in the Reactor when this method
- // is called (i.e., active_threads_ == 0)
-
- // Close down
- this->close ();
-
// Make necessary changes to the handler repository that we caused
- // by <close>.
+ // by the above actions. Someone who called close() is expecting that
+ // things will be tidied up upon return.
this->handler_rep_.make_changes ();
if (this->delete_timer_queue_)
@@ -1353,6 +1343,17 @@ ACE_WFMO_Reactor::~ACE_WFMO_Reactor (void)
this->notify_handler_ = 0;
this->delete_notify_handler_ = false;
}
+
+ return 0;
+}
+
+ACE_WFMO_Reactor::~ACE_WFMO_Reactor (void)
+{
+ // Assumption: No threads are left in the Reactor when this method
+ // is called (i.e., active_threads_ == 0)
+
+ // Close down
+ this->close ();
}
int
diff --git a/ACE/tests/Bug_2368_Regression_Test.cpp b/ACE/tests/Bug_2368_Regression_Test.cpp
index 242957533ba..25ae33cfc5f 100644
--- a/ACE/tests/Bug_2368_Regression_Test.cpp
+++ b/ACE/tests/Bug_2368_Regression_Test.cpp
@@ -78,42 +78,37 @@ run_main (int, ACE_TCHAR *[])
if (ACE_Reactor::instance ()->register_handler
(SIGINT,
&my_handlerA) == -1)
- ACE_ERROR_RETURN ((LM_DEBUG,
- "%p\n",
- "register_handlerA"),
- -1);
+ ACE_ERROR ((LM_DEBUG,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("register_handlerA")));
if (ACE_Reactor::instance ()->register_handler
- (SIGCHLD,
+ (SIGTERM,
&my_handlerB) == -1)
- ACE_ERROR_RETURN ((LM_DEBUG,
- "%p\n",
- "register_handlerB"),
- -1);
+ ACE_ERROR ((LM_DEBUG,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("register_handlerB")));
ACE_Sig_Action *new_disp = 0;
if (ACE_Reactor::instance ()->remove_handler
(SIGINT,
new_disp) == -1)
- ACE_ERROR_RETURN ((LM_DEBUG,
- "%p\n",
- "remove_handlerB"),
- -1);
+ ACE_ERROR ((LM_DEBUG,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("remove_handlerB")));
if (ACE_Reactor::instance ()->close () == -1)
ACE_ERROR ((LM_ERROR,
- "%p\n",
- "close"));
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("close")));
if (!handleA_close_called)
ACE_ERROR ((LM_ERROR,
- "Handle close hasn't been called for A. "
- "This test failure caused by the unresolved bug is EXPECTED!\n"));
+ ACE_TEXT ("Handle close hasn't been called for A.\n")));
if (!handleB_close_called)
ACE_ERROR ((LM_ERROR,
- "Handle close hasn't been called for B. "
- "This test failure caused by the unresolved bug is EXPECTED!\n"));
+ ACE_TEXT ("Handle close hasn't been called for B.\n")));
ACE_END_TEST;