diff options
-rw-r--r-- | libstdc++-v3/ChangeLog | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/basic_string.tcc | 11 |
2 files changed, 8 insertions, 7 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index e4b787b..55b8f79 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,7 @@ +2004-01-31 Paolo Carlini <pcarlini@suse.de> + + * include/bits/basic_string.tcc (_Rep::_S_create): Minor tweak. + 2004-01-30 Paolo Carlini <pcarlini@suse.de> * testsuite/21_strings/basic_string/cons/char/6.cc: New. diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc index e35b305..0e80f59 100644 --- a/libstdc++-v3/include/bits/basic_string.tcc +++ b/libstdc++-v3/include/bits/basic_string.tcc @@ -514,11 +514,10 @@ namespace std // Whew. Seemingly so needy, yet so elemental. size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); - if (__size + __malloc_header_size > __pagesize) + const size_type __adj_size = __size + __malloc_header_size; + if (__adj_size > __pagesize) { - const size_type __extra = (__pagesize - - (__size + __malloc_header_size) - % __pagesize); + const size_type __extra = __pagesize - __adj_size % __pagesize; __capacity += __extra / sizeof(_CharT); // Never allocate a string bigger than _S_max_size. if (__capacity > _S_max_size) @@ -527,9 +526,7 @@ namespace std } else if (__size > __subpagesize) { - const size_type __extra = (__subpagesize - - (__size + __malloc_header_size) - % __subpagesize); + const size_type __extra = __subpagesize - __adj_size % __subpagesize; __capacity += __extra / sizeof(_CharT); __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); } |