diff options
author | Steve Huston <shuston@riverace.com> | 2012-10-05 23:13:51 +0000 |
---|---|---|
committer | Steve Huston <shuston@riverace.com> | 2012-10-05 23:13:51 +0000 |
commit | fc03d8090e768ef44527ec3c090790f712a2942b (patch) | |
tree | 9771fc0632be15a3c4ee1bc5cfc1cad31ad1ba17 | |
parent | cade776c76856bde6736a3bb3b330dd4ef604a37 (diff) | |
download | ATCD-fc03d8090e768ef44527ec3c090790f712a2942b.tar.gz |
ChangeLogTag:Fri Oct 5 23:09:40 UTC 2012 Steve Huston <shuston@riverace.com>
-rw-r--r-- | ACE/ace/Sig_Handler.cpp | 6 | ||||
-rw-r--r-- | ACE/ace/Sig_Handler.inl | 5 | ||||
-rw-r--r-- | ACE/ace/WFMO_Reactor.cpp | 25 | ||||
-rw-r--r-- | ACE/tests/Bug_2368_Regression_Test.cpp | 33 |
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; |