summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-01-23 16:57:21 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-01-23 16:57:21 +0000
commitf5fb08140b22f0ce860941c8a01ed50e4e79ca3b (patch)
tree0839a5bc288bf6f7dcfc46cae2df737165c8e36b
parent41e25c04935078bd5eb0e5786234cfa4e6345bf9 (diff)
downloadATCD-f5fb08140b22f0ce860941c8a01ed50e4e79ca3b.tar.gz
ChangeLogTag: Thu Jan 23 10:54:23 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog7
-rw-r--r--TAO/tao/DynamicAny/DynCommon.cpp8
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 ();
}
}