diff options
-rw-r--r-- | TAO/ChangeLog | 7 | ||||
-rw-r--r-- | TAO/tao/DynamicAny/DynCommon.cpp | 8 |
2 files changed, 11 insertions, 4 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 6800115a172..b4c0a1398b6 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,10 @@ +Thu Jan 23 10:54:23 2003 Jeff Parsons <j.parsons@vanderbilt.edu> + + * tao/DynamicAny/DynCommon.cpp (get_reference): + + Fixed memory leak. Thanks to Grigory <grig@plesk.com> for + reporting the bug. + Wed Jan 22 14:56:22 2003 Balachandran Natarajan <bala@isis-server.isis.vanderbilt.edu> * tao/Invocation.cpp (invoke_i): Unbind the dispatcher instead of diff --git a/TAO/tao/DynamicAny/DynCommon.cpp b/TAO/tao/DynamicAny/DynCommon.cpp index 7b78edb5cc3..d240779b1d1 100644 --- a/TAO/tao/DynamicAny/DynCommon.cpp +++ b/TAO/tao/DynamicAny/DynCommon.cpp @@ -1156,21 +1156,21 @@ TAO_DynCommon::get_reference (ACE_ENV_SINGLE_ARG_DECL) if (this->has_components_) { DynamicAny::DynAny_var cc = this->check_component (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (0); + ACE_CHECK_RETURN (CORBA::Object::_nil ()); return cc->get_reference (ACE_ENV_SINGLE_ARG_PARAMETER); } else { - CORBA::Object_ptr retval; + CORBA::Object_var retval; - if ((this->any_ >>= CORBA::Any::to_object (retval)) == 0) + if ((this->any_ >>= CORBA::Any::to_object (retval.inout ())) == 0) { ACE_THROW_RETURN (DynamicAny::DynAny::TypeMismatch (), CORBA::Object::_nil ()); } - return CORBA::Object::_duplicate (retval); + return retval._retn (); } } |