diff options
author | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-06-13 16:12:20 +0000 |
---|---|---|
committer | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-06-13 16:12:20 +0000 |
commit | 303de1936216d9f9fc3d98f116fd1ecec5811572 (patch) | |
tree | 2740aafed330de7ba562cb7ce9bc9685a1183da2 /TAO | |
parent | f8ca026122fdb8e3b4e6fe049f409ca4a83065ba (diff) | |
download | ATCD-303de1936216d9f9fc3d98f116fd1ecec5811572.tar.gz |
ChangeLogTag:Mon Jun 13 05:07:32 2005 Ossama Othman <ossama@dre.vanderbilt.edu>
Diffstat (limited to 'TAO')
-rw-r--r-- | TAO/ChangeLog | 16 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/AV/AVStreams_i.cpp | 4 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/AV/AVStreams_i.h | 14 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.cpp | 6 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.h | 1 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.i | 5 |
6 files changed, 42 insertions, 4 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index c535a9cea5f..111461e6e4d 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,19 @@ +Mon Jun 13 05:07:32 2005 Ossama Othman <ossama@dre.vanderbilt.edu> + + * orbsvcs/orbsvcs/AV/AVStreams_i.cpp: + * orbsvcs/orbsvcs/AV/AVStreams_i.h: + + Made public destructors protected since the objects in question + are reference counted, i.e. memory management should be + performed through the reference counting mechanism, not operator + delete(); + + * orbsvcs/orbsvcs/AV/FlowSpec_Entry.cpp: + * orbsvcs/orbsvcs/AV/FlowSpec_Entry.h (TAO_FlowSpec_Entry): + * orbsvcs/orbsvcs/AV/FlowSpec_Entry.i: + + Fixed a memory leak. + Mon Jun 13 09:32:38 2005 Phil Mesnier <mesnier_p@ociweb.com> * tao/IIOP_Profile.cpp: diff --git a/TAO/orbsvcs/orbsvcs/AV/AVStreams_i.cpp b/TAO/orbsvcs/orbsvcs/AV/AVStreams_i.cpp index 2cd91ec89cd..a9845410bd8 100644 --- a/TAO/orbsvcs/orbsvcs/AV/AVStreams_i.cpp +++ b/TAO/orbsvcs/orbsvcs/AV/AVStreams_i.cpp @@ -59,6 +59,10 @@ AV_Null_MediaCtrl::AV_Null_MediaCtrl (void) { } +AV_Null_MediaCtrl::~AV_Null_MediaCtrl (void) +{ +} + // ---------------------------------------------------------------------- // TAO_Basic_StreamCtrl diff --git a/TAO/orbsvcs/orbsvcs/AV/AVStreams_i.h b/TAO/orbsvcs/orbsvcs/AV/AVStreams_i.h index c0e4c25b14b..38562894bad 100644 --- a/TAO/orbsvcs/orbsvcs/AV/AVStreams_i.h +++ b/TAO/orbsvcs/orbsvcs/AV/AVStreams_i.h @@ -1,4 +1,4 @@ -// -*- C++ +// -*- C++ -*- //============================================================================= /** @@ -65,6 +65,11 @@ class TAO_AV_Export AV_Null_MediaCtrl { public: AV_Null_MediaCtrl (void); + +protected: + + virtual ~AV_Null_MediaCtrl (void); + }; /** @@ -82,9 +87,6 @@ public: /// Default Constructor TAO_Basic_StreamCtrl (void); - /// Destructor. - virtual ~TAO_Basic_StreamCtrl (void); - /// Stop the transfer of data of the stream /// Empty the_spec means apply operation to all flows virtual void stop (const AVStreams::flowSpec &the_spec @@ -152,6 +154,10 @@ public: protected: + /// Destructor. + virtual ~TAO_Basic_StreamCtrl (void); + + /// The Virtual Devices for this stream AVStreams::VDev_var vdev_a_; AVStreams::VDev_var vdev_b_; diff --git a/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.cpp b/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.cpp index 9886212697f..671fd744b45 100644 --- a/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.cpp +++ b/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.cpp @@ -32,6 +32,7 @@ TAO_FlowSpec_Entry::TAO_FlowSpec_Entry (void) use_flow_protocol_ (0), entry_ (), is_multicast_ (0), + delete_peer_addr_ (false), peer_addr_ (0), local_sec_addr_ (0), num_local_sec_addrs_ (0), @@ -72,6 +73,7 @@ TAO_FlowSpec_Entry::TAO_FlowSpec_Entry (const char *flowname, use_flow_protocol_ (0), entry_ (), is_multicast_ (0), + delete_peer_addr_ (false), peer_addr_ (0), local_sec_addr_ (0), num_local_sec_addrs_ (0), @@ -136,6 +138,9 @@ TAO_FlowSpec_Entry::TAO_FlowSpec_Entry (const char *flowname, // Destructor. TAO_FlowSpec_Entry::~TAO_FlowSpec_Entry (void) { + if (this->delete_peer_addr_) + delete this->peer_addr_; + if (this->clean_up_address_) delete address_; if (this->clean_up_control_address_) @@ -587,6 +592,7 @@ TAO_Forward_FlowSpec_Entry::parse (const char *flowSpec_entry) ACE_INET_Addr (tokenizer [TAO_AV_PEER_ADDR]), 0); } + this->delete_peer_addr_ = true; this->peer_addr_ = addr; char buf [BUFSIZ]; diff --git a/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.h b/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.h index e171286341a..b605ebe401b 100644 --- a/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.h +++ b/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.h @@ -239,6 +239,7 @@ protected: ACE_CString entry_; int is_multicast_; + bool delete_peer_addr_; ACE_Addr *peer_addr_; char** local_sec_addr_; int num_local_sec_addrs_; diff --git a/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.i b/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.i index c1fcb42993d..fcc386e30d5 100644 --- a/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.i +++ b/TAO/orbsvcs/orbsvcs/AV/FlowSpec_Entry.i @@ -136,7 +136,12 @@ ACE_INLINE int TAO_FlowSpec_Entry::set_peer_addr (ACE_Addr *peer_addr) { + if (this->delete_peer_addr_) + delete this->peer_addr_; + + this->delete_peer_addr_ = false; this->peer_addr_ = peer_addr; + if (this->handler_ != 0) this->handler_->set_remote_address (peer_addr); return 0; |