This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[v3] Tweak basic_string::reserve to allow shrink-to-fit


Hi,

a cute one-liner contributed by Neil: I have only reviewed it, tested it
and tweaked a bit three testcases. Applied to mainline.

Paolo.

/////////////
2003-12-11  Neil Ferguson  <nferguso@eso.org>
	    Paolo Carlini  <pcarlini@suse.de>

	* include/bits/basic_string.tcc (reserve): Allow shrink-to-fit.
	* testsuite/21_strings/basic_string/capacity/1.cc: Tweak.
	* testsuite/21_strings/basic_string/capacity/char/1.cc: Ditto.
	* testsuite/21_strings/basic_string/capacity/wchar_t/1.cc: Ditto.
diff -urN libstdc++-v3-1/include/bits/basic_string.tcc libstdc++-v3/include/bits/basic_string.tcc
--- libstdc++-v3-1/include/bits/basic_string.tcc	2003-11-14 01:15:00.000000000 +0100
+++ libstdc++-v3/include/bits/basic_string.tcc	2003-12-11 22:41:52.000000000 +0100
@@ -474,7 +474,7 @@
     void
     basic_string<_CharT, _Traits, _Alloc>::reserve(size_type __res)
     {
-      if (__res > this->capacity() || _M_rep()->_M_is_shared())
+      if (__res != this->capacity() || _M_rep()->_M_is_shared())
         {
 	  if (__res > this->max_size())
 	    __throw_length_error("basic_string::reserve");
diff -urN libstdc++-v3-1/testsuite/21_strings/basic_string/capacity/1.cc libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc
--- libstdc++-v3-1/testsuite/21_strings/basic_string/capacity/1.cc	2003-09-23 22:02:06.000000000 +0200
+++ libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc	2003-12-11 22:56:51.000000000 +0100
@@ -140,7 +140,7 @@
   VERIFY( sz04 >= 100 );
   str02.reserve();
   sz03 = str02.capacity();
-  VERIFY( sz03 > 0 );
+  VERIFY( sz03 >= 0 );
 
   sz03 = str02.size() + 5;
   str02.resize(sz03);
diff -urN libstdc++-v3-1/testsuite/21_strings/basic_string/capacity/char/1.cc libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc
--- libstdc++-v3-1/testsuite/21_strings/basic_string/capacity/char/1.cc	2003-09-23 22:02:06.000000000 +0200
+++ libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc	2003-12-11 22:57:06.000000000 +0100
@@ -37,7 +37,7 @@
   VERIFY( sz02 >= 100 );
   str01.reserve();
   sz01 = str01.capacity();
-  VERIFY( sz01 > 0 );
+  VERIFY( sz01 >= 0 );
 
   sz01 = str01.size() + 5;
   str01.resize(sz01);
diff -urN libstdc++-v3-1/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc
--- libstdc++-v3-1/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc	2003-09-23 22:02:06.000000000 +0200
+++ libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc	2003-12-11 22:57:19.000000000 +0100
@@ -37,7 +37,7 @@
   VERIFY( sz02 >= 100 );
   str01.reserve();
   sz01 = str01.capacity();
-  VERIFY( sz01 > 0 );
+  VERIFY( sz01 >= 0 );
 
   sz01 = str01.size() + 5;
   str01.resize(sz01);

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]