diff options
-rw-r--r-- | TAO/ChangeLog | 8 | ||||
-rw-r--r-- | TAO/tao/PortableServer/Root_POA.cpp | 5 |
2 files changed, 13 insertions, 0 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 7f3ef65cb48..5504df8ccaf 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,11 @@ +Wed Oct 25 15:33:27 UTC 2006 Chad Elliott <elliott_c@ociweb.com> + + * tao/PortableServer/Root_POA.cpp: + + My change from Mon Oct 23 12:24:57 UTC 2006 uncovered yet another + reference counting problem. The TAO_Root_POA was not manipulating + the reference count of the TAO_POA_Manager that it held. + Mon Oct 23 12:24:57 UTC 2006 Chad Elliott <elliott_c@ociweb.com> * tao/PortableServer/Object_Adapter.h: diff --git a/TAO/tao/PortableServer/Root_POA.cpp b/TAO/tao/PortableServer/Root_POA.cpp index 31e240c2006..458c909ee3d 100644 --- a/TAO/tao/PortableServer/Root_POA.cpp +++ b/TAO/tao/PortableServer/Root_POA.cpp @@ -255,6 +255,10 @@ TAO_Root_POA::TAO_Root_POA (const TAO_Root_POA::String &name, caller_key_to_object_ (0), servant_for_key_to_object_ (0) { + // Since we are keeping a reference to a POAManager, we need to + // increment the reference count + this->poa_manager_._add_ref(); + // Parse the policies that are used in the critical path in // a cache. this->cached_policies_.update (this->policies_ @@ -331,6 +335,7 @@ TAO_Root_POA::TAO_Root_POA (const TAO_Root_POA::String &name, TAO_Root_POA::~TAO_Root_POA (void) { + this->poa_manager_._remove_ref(); } void |