Author: faridz
Date: Mon Mar 17 07:25:28 2008
New Revision: 637898

URL: http://svn.apache.org/viewvc?rev=637898&view=rev
Log:
2008-03-17  Farid Zaripov  <[EMAIL PROTECTED]>

        Merged r637897 from trunk.
        * include/string.cc (__replace_aux): Partially reverted
        changes for STDCXX-170 (r629550).

        * tests/regress/21.string.replace.stdcxx-170.cpp: Deleted
        regression test since STDCXX-170 issue deferred to 4.3 release.

Removed:
    stdcxx/branches/4.2.x/tests/regress/21.string.replace.stdcxx-170.cpp
Modified:
    stdcxx/branches/4.2.x/include/string.cc

Modified: stdcxx/branches/4.2.x/include/string.cc
URL: 
http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/string.cc?rev=637898&r1=637897&r2=637898&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/string.cc (original)
+++ stdcxx/branches/4.2.x/include/string.cc Mon Mar 17 07:25:28 2008
@@ -648,35 +648,14 @@
         }
         else {
             // Current reference has enough room.
-            pointer __tmp = 0;
-
-            if (__n2) {
-                const const_pointer __ptr =
-                    &_RWSTD_REINTERPRET_CAST (const_reference, *__first2);
-
-                if (__s.data () <= __ptr && __s.data () + __ssize > __ptr) {
-                    const _RWSTD_SIZE_T __tmp_size = __n2 * sizeof 
(value_type);
-                    __tmp = _RWSTD_STATIC_CAST (pointer,
-                                                ::operator new (__tmp_size));
-                    for (__d = 0; __d < __n2; __d++)
-                        traits_type::assign (*(__tmp + __d), *__first2++);
-                }
-            }
-
             if (__rem)
                 traits_type::move (__s._C_data + __pos + __n2,
                                    __s._C_data + __pos + __n, 
                                    __rem);
 
-            if (__tmp) {
-                traits_type::copy (__s._C_data + __pos, __tmp, __n2);
-                ::operator delete (__tmp);
-            }
-            else {
-                for (__d = 0; __d < __n2; __d++)
-                    traits_type::assign (*(__s._C_data + __pos + __d),
-                                         *__first2++);
-            }
+            for (__d = 0; __d < __n2; __d++)
+                traits_type::assign (*(__s._C_data + __pos + __d),
+                                     *__first2++);
 
             __s._C_pref ()->_C_size._C_size = __len;
             traits_type::assign (__s._C_data [__len], value_type ());


Reply via email to