diff options
Diffstat (limited to 'TAO/tao/Managed_Types.cpp')
-rw-r--r-- | TAO/tao/Managed_Types.cpp | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/TAO/tao/Managed_Types.cpp b/TAO/tao/Managed_Types.cpp index 1334d4ac165..5c2b8ed152f 100644 --- a/TAO/tao/Managed_Types.cpp +++ b/TAO/tao/Managed_Types.cpp @@ -10,20 +10,12 @@ ACE_RCSID (tao, Managed_Types, "$Id$") -TAO_BEGIN_VERSIONED_NAMESPACE_DECL - // assignment from CORBA::String_var makes a copy TAO_String_Manager& TAO_String_Manager::operator= (const CORBA::String_var &var) { - // Strongly exception safe by means of copy and non-throwing swap - // technique. - TAO_String_Manager tmp (var.in ()); - - char * old_ptr = this->ptr_; - this->ptr_ = tmp.ptr_; - tmp.ptr_ = old_ptr; - + CORBA::string_free (this->ptr_); + this->ptr_ = CORBA::string_dup (var.in ()); return *this; } @@ -46,14 +38,8 @@ TAO_SeqElem_String_Manager::operator= (const CORBA::String_var &var) TAO_WString_Manager& TAO_WString_Manager::operator= (const CORBA::WString_var &var) { - // Strongly exception safe by means of copy and non-throwing swap - // technique. - TAO_WString_Manager tmp (var.in ()); - - CORBA::WChar * old_ptr = this->ptr_; - this->ptr_ = tmp.ptr_; - tmp.ptr_ = old_ptr; - + CORBA::wstring_free (this->ptr_); + this->ptr_ = CORBA::wstring_dup (var.in ()); return *this; } @@ -69,5 +55,3 @@ TAO_SeqElem_WString_Manager::operator= (const CORBA::WString_var &var) *this->ptr_ = CORBA::wstring_dup (var.in ()); return *this; } - -TAO_END_VERSIONED_NAMESPACE_DECL |