stdcxx-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vi...@apache.org
Subject svn commit: r617280 - in /stdcxx/branches/4.2.x: include/istream.cc include/string include/string.cc tests/regress/21.string.stdcxx-231.cpp
Date Thu, 31 Jan 2008 22:58:09 GMT
Author: vitek
Date: Thu Jan 31 14:58:07 2008
New Revision: 617280

URL: http://svn.apache.org/viewvc?rev=617280&view=rev
Log:

2008-01-31  Travis Vitek  <vitek@roguewave.com>

	Merged rev 617251 and 617276 from trunk.

	2008-01-31  Travis Vitek  <vitek@roguewave.com>

	STDCXX-231
	* include/string (clear): Avoid deallocating string body unless necessary.
	* include/string.cc (replace): Ditto.
	* include/istream.cc (getline): Call clear () instead of erase() to avoid
	unnecessary overhead.

	2008-01-31  Travis Vitek  <vitek@roguewave.com>

	* tests/regress/21.string.stdcxx-231.cpp: Added regression test for
	STDCXX-231.


Added:
    stdcxx/branches/4.2.x/tests/regress/21.string.stdcxx-231.cpp
      - copied unchanged from r617276, stdcxx/trunk/tests/regress/21.string.stdcxx-231.cpp
Modified:
    stdcxx/branches/4.2.x/include/istream.cc
    stdcxx/branches/4.2.x/include/string
    stdcxx/branches/4.2.x/include/string.cc

Modified: stdcxx/branches/4.2.x/include/istream.cc
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/istream.cc?rev=617280&r1=617279&r2=617280&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/istream.cc (original)
+++ stdcxx/branches/4.2.x/include/istream.cc Thu Jan 31 14:58:07 2008
@@ -877,7 +877,7 @@
 
     if (__ipfx) { 
 
-        __str.erase ();
+        __str.clear ();
 
         // carefuly handle arithmetic overflow
         _SizeT __n = __str.max_size ();

Modified: stdcxx/branches/4.2.x/include/string
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/string?rev=617280&r1=617279&r2=617280&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/string (original)
+++ stdcxx/branches/4.2.x/include/string Thu Jan 31 14:58:07 2008
@@ -266,7 +266,12 @@
     void reserve (size_type = 0);
 
     void clear () {
-        _C_unlink (_C_nullref ()->data ());
+        if (size_type (1) < size_type (_C_pref ()->_C_get_ref ()))
+            _C_unlink (_C_nullref ()->data ());
+        else {
+            traits_type::assign (_C_data [0], value_type ());
+            _C_pref ()->_C_size._C_size = 0;
+        }
     }
 
     bool empty () const  {

Modified: stdcxx/branches/4.2.x/include/string.cc
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/string.cc?rev=617280&r1=617279&r2=617280&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/include/string.cc (original)
+++ stdcxx/branches/4.2.x/include/string.cc Thu Jan 31 14:58:07 2008
@@ -379,7 +379,7 @@
     }
     else {
         // special case a substitution that leaves the string empty.
-        _C_unlink (_C_nullref ()->data ());
+        clear ();
     }
 
     return *this;
@@ -452,8 +452,8 @@
         }
     }
     else {
-        // construct the empty string
-        _C_unlink (_C_nullref ()->data ());
+        // special case a substitution that leaves the string empty.
+        clear ();
     }
 
     return *this;



Mime
View raw message