diff options
Diffstat (limited to 'ace/Service_Types.cpp')
-rw-r--r-- | ace/Service_Types.cpp | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/ace/Service_Types.cpp b/ace/Service_Types.cpp index 684c0de6ac7..4552607640e 100644 --- a/ace/Service_Types.cpp +++ b/ace/Service_Types.cpp @@ -35,13 +35,11 @@ ACE_Service_Type_Impl::dump (void) const ACE_Service_Type_Impl::ACE_Service_Type_Impl (void *so, const ACE_TCHAR *s_name, u_int f, - ACE_Service_Object_Exterminator gobbler, - int stype) + ACE_Service_Object_Exterminator gobbler) : name_ (0), obj_ (so), gobbler_ (gobbler), - flags_ (f), - service_type_(stype) + flags_ (f) { ACE_TRACE ("ACE_Service_Type_Impl::ACE_Service_Type_Impl"); this->name (s_name); @@ -81,19 +79,11 @@ ACE_Service_Type_Impl::fini (void) const return 0; } -int -ACE_Service_Type_Impl::fini_delete (void) const -{ - ACE_TRACE ("ACE_Service_Type_Impl::fini_delete"); - return ACE_Service_Type_Impl::fini (); -} - ACE_Service_Object_Type::ACE_Service_Object_Type (void *so, const ACE_TCHAR *s_name, u_int f, - ACE_Service_Object_Exterminator gobbler, - int stype) - : ACE_Service_Type_Impl (so, s_name, f, gobbler, stype) + ACE_Service_Object_Exterminator gobbler) + : ACE_Service_Type_Impl (so, s_name, f, gobbler) , initialized_ (-1) { ACE_TRACE ("ACE_Service_Object_Type::ACE_Service_Object_Type"); @@ -174,9 +164,8 @@ ACE_Module_Type::dump (void) const ACE_Module_Type::ACE_Module_Type (void *m, const ACE_TCHAR *m_name, - u_int f, - int stype) - : ACE_Service_Type_Impl (m, m_name, f, 0, stype) + u_int f) + : ACE_Service_Type_Impl (m, m_name, f) { ACE_TRACE ("ACE_Module_Type::ACE_Module_Type"); } @@ -241,8 +230,21 @@ int ACE_Module_Type::fini (void) const { ACE_TRACE ("ACE_Module_Type::fini"); - // ACE_Module_Type(s) get deleted by fini_delete Bugzilla #3334 - return 0; + + void *obj = this->object (); + MT_Module *mod = (MT_Module *) obj; + MT_Task *reader = mod->reader (); + MT_Task *writer = mod->writer (); + + if (reader != 0) + reader->fini (); + + if (writer != 0) + writer->fini (); + + // Close the module and delete the memory. + mod->close (MT_Module::M_DELETE); + return ACE_Service_Type_Impl::fini (); } int @@ -322,9 +324,8 @@ ACE_Stream_Type::resume (void) const ACE_Stream_Type::ACE_Stream_Type (void *s, const ACE_TCHAR *s_name, - u_int f, - int stype) - : ACE_Service_Type_Impl (s, s_name, f, 0, stype), + u_int f) + : ACE_Service_Type_Impl (s, s_name, f), head_ (0) { ACE_TRACE ("ACE_Stream_Type::ACE_Stream_Type"); @@ -434,14 +435,14 @@ ACE_Stream_Type::push (ACE_Module_Type *new_module) } ACE_Module_Type * -ACE_Stream_Type::find (const ACE_TCHAR *mod_name) const +ACE_Stream_Type::find (const ACE_TCHAR *module_name) const { ACE_TRACE ("ACE_Stream_Type::find"); for (ACE_Module_Type *m = this->head_; m != 0; m = m->link ()) - if (ACE_OS::strcmp (m->name (), mod_name) == 0) + if (ACE_OS::strcmp (m->name (), module_name) == 0) return m; return 0; |