This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[v3] Tweak basic_string::reserve to allow shrink-to-fit
- From: Paolo Carlini <pcarlini at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Neil Ferguson <nferguso at eso dot org>
- Date: Thu, 11 Dec 2003 23:33:05 +0100
- Subject: [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);