summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormk1 <mk1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-06-28 20:30:24 +0000
committermk1 <mk1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-06-28 20:30:24 +0000
commit3c18da2373ebdb29a2ebd08be4b4d5a1e3f83c14 (patch)
tree54a81f9140ede47e61ed8d9f31b4e64855299782
parent03d7f82f98e0914ead0a425b94a39c1a1bed5c90 (diff)
downloadATCD-3c18da2373ebdb29a2ebd08be4b4d5a1e3f83c14.tar.gz
ChangeLog entry: Sun Jun 28 15:30:00 1998 Michael Kircher <mk1@cs.wustl.edu>
-rw-r--r--TAO/ChangeLog-98c6
-rw-r--r--TAO/tao/GIOP.cpp19
2 files changed, 16 insertions, 9 deletions
diff --git a/TAO/ChangeLog-98c b/TAO/ChangeLog-98c
index a30187c7b39..84b93e8a540 100644
--- a/TAO/ChangeLog-98c
+++ b/TAO/ChangeLog-98c
@@ -1,3 +1,9 @@
+Sun Jun 28 15:30:00 1998 Michael Kircher <mk1@cs.wustl.edu>
+
+ * tao/GIOP.cpp: In method location_forwarding, removed
+ the explicit release of the IIOP_Object. It is implicitly
+ released by the release of the CORBA::OBject pointer.
+
Sat Jun 27 18:13:05 1998 Irfan Pyarali <irfan@cs.wustl.edu>
* TAO/tests/POA/Explicit_Activation/server.cpp (main): Changed
diff --git a/TAO/tao/GIOP.cpp b/TAO/tao/GIOP.cpp
index ac33a331c37..9edda2016d4 100644
--- a/TAO/tao/GIOP.cpp
+++ b/TAO/tao/GIOP.cpp
@@ -609,7 +609,7 @@ TAO_GIOP::recv_request (TAO_SVC_HANDLER *&handler,
return retval;
}
-// Normal invocations don't involve any heap allocation; messages are
+// Normal invocations don't involve any heap al; messages are
// constructed into stack-based buffers and are read into those
// buffers too. Larger buffers are heap-allocated as needed.
//
@@ -695,7 +695,7 @@ TAO_GIOP_Invocation::start (CORBA::Environment &env)
ACE_INET_Addr *server_addr_p = 0;
{
- ACE_MT (ACE_GUARD (ACE_SYNCH_MUTEX, guard, data_->get_fwd_profile_lock ()));
+ ACE_MT (ACE_WRITE_GUARD (ACE_SYNCH_RW_MUTEX, guard, data_->get_fwd_profile_lock ()));
if (data_->get_fwd_profile_i () != 0)
{
@@ -922,7 +922,10 @@ TAO_GIOP_Invocation::invoke (CORBA::ExceptionList &exceptions,
// not just the connection. Without reinitializing, we'd give
// false error reports to applications.
{
- ACE_MT (ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, guard, data_->get_fwd_profile_lock (), TAO_GIOP_SYSTEM_EXCEPTION));
+ ACE_MT (ACE_READ_GUARD_RETURN (ACE_SYNCH_RW_MUTEX,
+ guard,
+ data_->get_fwd_profile_lock (),
+ TAO_GIOP_SYSTEM_EXCEPTION));
IIOP::Profile *old = data_->set_fwd_profile (0);
@@ -1169,9 +1172,6 @@ TAO_GIOP_Invocation::location_forward (CORBA::Environment &env)
return TAO_GIOP_SYSTEM_EXCEPTION;
}
- // The object is no longer needed, because we have now the IIOP_Object
- CORBA::release (object_ptr);
- CORBA::release (object_ptr);
// Make a copy of the IIOP profile in the forwarded objref,
// reusing memory where practical. Then delete the forwarded
@@ -1188,8 +1188,9 @@ TAO_GIOP_Invocation::location_forward (CORBA::Environment &env)
// store the new profile in the forwarding profile
// note: this has to be and is thread safe
- // Release the IIOP_Object
- iIOP_Object_ptr->Release ();
+ // The object is no longer needed, because we have now the IIOP_Object
+ CORBA::release (object_ptr);
+ CORBA::release (object_ptr);
env.clear ();
@@ -1294,7 +1295,7 @@ TAO_GIOP_Invocation::invoke (TAO_Exception_Data *excepts,
// not just the connection. Without reinitializing, we'd give
// false error reports to applications.
{
- ACE_MT (ACE_GUARD_RETURN (ACE_SYNCH_MUTEX, guard, data_->get_fwd_profile_lock (), TAO_GIOP_SYSTEM_EXCEPTION));
+ ACE_MT (ACE_READ_GUARD_RETURN (ACE_SYNCH_RW_MUTEX, guard, data_->get_fwd_profile_lock (), TAO_GIOP_SYSTEM_EXCEPTION));
IIOP::Profile *old = data_->set_fwd_profile (0);