summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Huston <shuston@riverace.com>2006-09-08 23:11:21 +0000
committerSteve Huston <shuston@riverace.com>2006-09-08 23:11:21 +0000
commit65f0b56ff1f9b62bfc316779a7c3cd04a8a31ab6 (patch)
treeea7f3b0ec0c730846958ae33355f8c44ee19d48f
parent163c82a033700d123dd71edb15dbeb61da3bbb0b (diff)
downloadATCD-65f0b56ff1f9b62bfc316779a7c3cd04a8a31ab6.tar.gz
ChangeLogTag:Fri Sep 8 21:11:20 UTC 2006 Steve Huston <shuston@riverace.com>
-rw-r--r--ACE/ChangeLog19
-rw-r--r--ACE/THANKS1
-rw-r--r--ACE/ace/Bound_Ptr.h4
-rw-r--r--ACE/ace/CDR_Stream.cpp2
-rw-r--r--ACE/protocols/ace/RMCast/Protocol.h59
5 files changed, 57 insertions, 28 deletions
diff --git a/ACE/ChangeLog b/ACE/ChangeLog
index f03ea8a11ed..900173041bb 100644
--- a/ACE/ChangeLog
+++ b/ACE/ChangeLog
@@ -1,3 +1,22 @@
+Fri Sep 8 21:11:20 UTC 2006 Steve Huston <shuston@riverace.com>
+
+ * ace/CDR_Stream.cpp (ACE_OutputCDR::replace()): Fixed compile error
+ from apparant cut/paste error in ACE_ENABLE_SWAP_ON_WRITE path.
+ Thanks to JR Andreassen for reporting this.
+
+ * ace/Bound_Ptr.h: Changed new constructor/assignment to use
+ dynamic_cast in order to be able to transport pointers through
+ that can go both up and down a class hierarchy.
+ (See Wed Sep 6 07:40:03 UTC 2006 Boris Kolpackov
+ <boris@codesynthesis.com>).
+
+ * protocols/ace/RMCast/Protocol.h (clone(), clone_()): Replaced use of
+ naked pointers returned from clone_() with ACE_Strong_Bound_Ptr and
+ used new ACE_Strong_Bound_Ptr ctor to facilitate carrying a more-
+ refined type through a Profile_ptr and back. Closes up a window
+ for exception unsafeness noticed by Boris Kolpackov. Also see
+ Tue Aug 22 22:52:41 UTC 2006 Steve Huston <shuston@riverace.com>
+
Fri Sep 8 18:25:17 UTC 2006 Steve Huston <shuston@riverace.com>
* ace/Synch_Options.{h cpp}: Improved the documentation for this
diff --git a/ACE/THANKS b/ACE/THANKS
index 0a338539b02..ca3d750b42f 100644
--- a/ACE/THANKS
+++ b/ACE/THANKS
@@ -2145,6 +2145,7 @@ Liu Qian <qianliu dot gmail at com>
Nzer Zaidenberg <scipioenterprises at yahoo dot com>
Birgit Platt <bhe at newbase dot de>
Andy Salnikov <a_salnikov at yahoo dot com>
+Andriy Gapon <avg at icyb dot net dot ua>
I would particularly like to thank Paul Stephenson, who worked with me
at Ericsson in the early 1990's. Paul devised the recursive Makefile
diff --git a/ACE/ace/Bound_Ptr.h b/ACE/ace/Bound_Ptr.h
index 93cd8e2ec9e..619e0c4eb87 100644
--- a/ACE/ace/Bound_Ptr.h
+++ b/ACE/ace/Bound_Ptr.h
@@ -131,7 +131,7 @@ public:
template <class Y>
ACE_Strong_Bound_Ptr (const ACE_Strong_Bound_Ptr<Y, ACE_LOCK> &r)
: counter_ (r.counter_),
- ptr_ (r.ptr_)
+ ptr_ (dynamic_cast<X*>(r.ptr_))
{
// This ctor is temporarily defined here to increase our chances
// of being accepted by broken compilers.
@@ -161,7 +161,7 @@ public:
// This will work if &r == this, by first increasing the ref count
COUNTER *new_counter = r.counter_;
- X* new_ptr = r.ptr_;
+ X* new_ptr = dynamic_cast<X*> (r.ptr_);
COUNTER::attach_strong (new_counter);
if (COUNTER::detach_strong (this->counter_) == 0)
delete this->ptr_;
diff --git a/ACE/ace/CDR_Stream.cpp b/ACE/ace/CDR_Stream.cpp
index f010778f59e..e5636990a7e 100644
--- a/ACE/ace/CDR_Stream.cpp
+++ b/ACE/ace/CDR_Stream.cpp
@@ -651,7 +651,7 @@ ACE_OutputCDR::replace (ACE_CDR::Long x, char* loc)
#if !defined (ACE_ENABLE_SWAP_ON_WRITE)
*reinterpret_cast<ACE_CDR::Long*> (loc) = x;
#else
- if (!strm->do_byte_swap ())
+ if (!this->do_byte_swap_)
{
*reinterpret_cast<ACE_CDR::Long *> (loc) = x;
}
diff --git a/ACE/protocols/ace/RMCast/Protocol.h b/ACE/protocols/ace/RMCast/Protocol.h
index 7dfd45702ca..cf2c2d2289d 100644
--- a/ACE/protocols/ace/RMCast/Protocol.h
+++ b/ACE/protocols/ace/RMCast/Protocol.h
@@ -5,6 +5,7 @@
#ifndef ACE_RMCAST_PROTOCOL_H
#define ACE_RMCAST_PROTOCOL_H
+#include "ace/Auto_Ptr.h"
#include "ace/Bound_Ptr.h"
#include "ace/Vector_T.h"
@@ -138,7 +139,7 @@ namespace ACE_RMCast
{
}
- virtual Profile *
+ virtual Profile_ptr
clone_ () = 0;
private:
@@ -403,14 +404,15 @@ namespace ACE_RMCast
From_ptr
clone ()
{
- return From_ptr (dynamic_cast<From *> (clone_ ()));
+ return From_ptr (clone_ ());
}
protected:
- virtual Profile *
+ virtual Profile_ptr
clone_ ()
{
- return new From (*this);
+ Profile_ptr p (new From (*this));
+ return p;
}
From (From const& from)
@@ -487,14 +489,15 @@ namespace ACE_RMCast
To_ptr
clone ()
{
- return To_ptr (dynamic_cast<To *> (clone_ ()));
+ return To_ptr (clone_ ());
}
protected:
- virtual Profile *
+ virtual Profile_ptr
clone_ ()
{
- return new To (*this);
+ Profile_ptr p (new To (*this));
+ return p;
}
To (To const& to)
@@ -588,14 +591,15 @@ namespace ACE_RMCast
Data_ptr
clone ()
{
- return Data_ptr (dynamic_cast<Data *> (clone_ ()));
+ return Data_ptr (clone_ ());
}
protected:
- virtual Profile *
+ virtual Profile_ptr
clone_ ()
{
- return new Data (*this);
+ Profile_ptr p (new Data (*this));
+ return p;
}
Data (Data const& d)
@@ -698,14 +702,15 @@ namespace ACE_RMCast
SN_ptr
clone ()
{
- return SN_ptr (dynamic_cast<SN *> (clone_ ()));
+ return SN_ptr (clone_ ());
}
protected:
- virtual Profile *
+ virtual Profile_ptr
clone_ ()
{
- return new SN (*this);
+ Profile_ptr p (new SN (*this));
+ return p;
}
SN (SN const& sn)
@@ -801,14 +806,15 @@ namespace ACE_RMCast
NAK_ptr
clone ()
{
- return NAK_ptr (dynamic_cast<NAK *> (clone_ ()));
+ return NAK_ptr (clone_ ());
}
protected:
- virtual Profile *
+ virtual Profile_ptr
clone_ ()
{
- return new NAK (*this);
+ Profile_ptr p (new NAK (*this));
+ return p;
}
NAK (NAK const& nak)
@@ -986,14 +992,15 @@ namespace ACE_RMCast
NRTM_ptr
clone ()
{
- return NRTM_ptr (dynamic_cast<NRTM *> (clone_ ()));
+ return NRTM_ptr (clone_ ());
}
protected:
- virtual Profile *
+ virtual Profile_ptr
clone_ ()
{
- return new NRTM (*this);
+ Profile_ptr p (new NRTM (*this));
+ return p;
}
NRTM (NRTM const& nrtm)
@@ -1137,14 +1144,15 @@ namespace ACE_RMCast
NoData_ptr
clone ()
{
- return NoData_ptr (dynamic_cast<NoData *> (clone_ ()));
+ return NoData_ptr (clone_ ());
}
protected:
- virtual Profile *
+ virtual Profile_ptr
clone_ ()
{
- return new NoData (*this);
+ Profile_ptr p (new NoData (*this));
+ return p;
}
NoData (NoData const& no_data)
@@ -1199,14 +1207,15 @@ namespace ACE_RMCast
Part_ptr
clone ()
{
- return Part_ptr (dynamic_cast<Part *> (clone_ ()));
+ return Part_ptr (clone_ ());
}
protected:
- virtual Profile *
+ virtual Profile_ptr
clone_ ()
{
- return new Part (*this);
+ Profile_ptr p (new Part (*this));
+ return p;
}
Part (Part const& part)