From 1ba3c12497ef4de1ecec17e19ebc0deec8626608 Mon Sep 17 00:00:00 2001 From: iliyan Date: Wed, 8 Nov 2006 22:23:09 +0000 Subject: ChangeLogTag: Wed Nov 8 22:12:46 UTC 2006 Iliyan Jeliazkov --- ACE/ChangeLog | 16 +++++++++++++--- ACE/ace/Service_Config.cpp | 25 ++++++++++++++----------- ACE/ace/Service_Gestalt.cpp | 4 ---- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/ACE/ChangeLog b/ACE/ChangeLog index 78c72b3dfaf..21358d19bfc 100644 --- a/ACE/ChangeLog +++ b/ACE/ChangeLog @@ -1,7 +1,19 @@ +Wed Nov 8 22:12:46 UTC 2006 Iliyan Jeliazkov + + * ace/Service_Config.cpp: + * ace/Service_Gestalt.cpp: + + This resolves a problem with shutting down the Service + Configurator via the static ACE_Service_Config::close () method, + where the registered services' fini() methods were not being + called. For full details, see bugzilla# 2701. Thanks to Aaron + Scamehorn for discovering + it an providing a test case. + Wed Nov 8 19:21:17 UTC 2006 William R. Otte * bin/make_release: - + Updates to the release script to work with Subversion. Mon Nov 6 16:07:43 UTC 2006 Douglas C. Schmidt @@ -74,7 +86,6 @@ Tue Nov 7 07:52:12 UTC 2006 Johnny Willemsen * include/makeinclude/platform_rtems.x_g++.GNU: Removed -ansi ->>>>>>> .r75251 Tue Nov 7 01:47:46 UTC 2006 Phil Mesnier * ace/Sock_Connect.cpp (count_interfaces): @@ -101,7 +112,6 @@ Mon Nov 6 16:52:14 UTC 2006 Phil Mesnier the footprint and improves performance by eliminating the effectively duplicated code in count_interfaces(). ->>>>>>> .r75238 Mon Nov 06 14:14:10 UTC 2006 Martin Corino * ace/config-vxworks6.3.h: diff --git a/ACE/ace/Service_Config.cpp b/ACE/ace/Service_Config.cpp index 07c7ea36006..3ceb1ebd9f7 100644 --- a/ACE/ace/Service_Config.cpp +++ b/ACE/ace/Service_Config.cpp @@ -89,10 +89,10 @@ ACE_Service_Config::parse_args_i (int argc, ACE_TCHAR *argv[]) { ACE_TRACE ("ACE_Service_Config::parse_args_i"); - // Using PERMUTE_ARGS (default) in order to have all - // unrecognized options and their value arguments moved - // to the end of the argument vector. We'll pick them up - // after processing our options and pass them on to the + // Using PERMUTE_ARGS (default) in order to have all + // unrecognized options and their value arguments moved + // to the end of the argument vector. We'll pick them up + // after processing our options and pass them on to the // base class for further parsing. ACE_Get_Opt getopt (argc, argv, @@ -101,7 +101,7 @@ ACE_Service_Config::parse_args_i (int argc, ACE_TCHAR *argv[]) 0, // Do not report errors ACE_Get_Opt::RETURN_IN_ORDER); - // Keep a list of all unknown arguments, begin with the + // Keep a list of all unknown arguments, begin with the // executable's name ACE_ARGV superargv; superargv.add (argv[0]); @@ -140,7 +140,7 @@ ACE_Service_Config::parse_args_i (int argc, ACE_TCHAR *argv[]) for (int c = getopt.opt_ind (); c < argc; c++) superargv.add (argv[c-1]); - return ACE_Service_Gestalt::parse_args_i (superargv.argc (), + return ACE_Service_Gestalt::parse_args_i (superargv.argc (), superargv.argv ()); } /* parse_args_i () */ @@ -338,7 +338,7 @@ ACE_Service_Config::impl_ (void) TSS_Service_Gestalt_Ptr, 0); } - + return instance_; } @@ -450,9 +450,6 @@ ACE_Service_Config::ACE_Service_Config (int ignore_static_svcs, ACE_Service_Config::signum_ = signum; - // Initialize the Service Repository. - // ACE_Service_Repository::instance (static_cast (size)); - // Make sure ACE_OS_Object_Manager is initialized. (void)ACE_OS_Object_Manager::instance (); @@ -582,7 +579,13 @@ ACE_Service_Config::reconfigure (void) int ACE_Service_Config::close (void) { - return ACE_Service_Config::current ()->close (); + int result1 = ACE_Service_Config::current ()->close (); + + // Delete the service repository. All the objects inside the + // service repository should already have been finalized. + int result2 = ACE_Service_Config::close_svcs (); + + return (result1 | result2); } int diff --git a/ACE/ace/Service_Gestalt.cpp b/ACE/ace/Service_Gestalt.cpp index 0c110a162ef..eeae45e785d 100644 --- a/ACE/ace/Service_Gestalt.cpp +++ b/ACE/ace/Service_Gestalt.cpp @@ -1251,10 +1251,6 @@ ACE_Service_Gestalt::close (void) if (this->is_opened_ > 0) return 0; - // Delete the service repository. All the objects inside the - // service repository should already have been finalized. - // ACE_Service_Config::close_svcs (); - // Delete the list fo svc.conf files delete this->svc_conf_file_queue_; this->svc_conf_file_queue_ = 0; -- cgit v1.2.1