[multiple changes]
2006-07-03 Ian Lance Taylor <ian@airs.com> Paolo Carlini <pcarlini@suse.de> * include/ext/rc_string_base.h (__rc_string_base::_S_max_size): Increase by a factor of two. * include/ext/sso_string_base.h (__sso_string_base::_S_max_size): Likewise. 2006-07-03 Paolo Carlini <pcarlini@suse.de> * include/ext/sso_string_base.h (__sso_string_base::_M_create): Never allocate a string bigger than _S_max_size. From-SVN: r115155
This commit is contained in:
parent
cdc3c14cfc
commit
7aa6ba766c
3 changed files with 23 additions and 5 deletions
|
@ -1,3 +1,16 @@
|
|||
2006-07-03 Ian Lance Taylor <ian@airs.com>
|
||||
Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
* include/ext/rc_string_base.h (__rc_string_base::_S_max_size):
|
||||
Increase by a factor of two.
|
||||
* include/ext/sso_string_base.h (__sso_string_base::_S_max_size):
|
||||
Likewise.
|
||||
|
||||
2006-07-03 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
* include/ext/sso_string_base.h (__sso_string_base::_M_create): Never
|
||||
allocate a string bigger than _S_max_size.
|
||||
|
||||
2006-06-29 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
* include/Makefile.am (pch1_input, pch1_output_builddir,
|
||||
|
|
|
@ -177,9 +177,9 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
|
|||
// npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT)
|
||||
// Solving for m:
|
||||
// m = ((npos - sizeof(_Rep)) / sizeof(_CharT)) - 1
|
||||
// In addition, this implementation quarters this amount.
|
||||
// In addition, this implementation halfs this amount.
|
||||
enum { _S_max_size = (((static_cast<size_type>(-1) - sizeof(_Rep))
|
||||
/ sizeof(_CharT)) - 1) / 4 };
|
||||
/ sizeof(_CharT)) - 1) / 2 };
|
||||
|
||||
// Data Member (private):
|
||||
mutable typename _Util_Base::template _Alloc_hider<_Alloc> _M_dataplus;
|
||||
|
|
|
@ -61,9 +61,9 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
|
|||
// npos = m * sizeof(_CharT) + sizeof(_CharT)
|
||||
// Solving for m:
|
||||
// m = npos / sizeof(_CharT) - 1
|
||||
// In addition, this implementation quarters this amount.
|
||||
// In addition, this implementation halfs this amount.
|
||||
enum { _S_max_size = (((static_cast<size_type>(-1)
|
||||
/ sizeof(_CharT)) - 1) / 4) };
|
||||
/ sizeof(_CharT)) - 1) / 2) };
|
||||
|
||||
// Data Members (private):
|
||||
typename _Util_Base::template _Alloc_hider<_CharT_alloc_type>
|
||||
|
@ -325,7 +325,12 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
|
|||
// meet amortized linear time requirements of the library: see
|
||||
// http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html.
|
||||
if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
|
||||
__capacity = 2 * __old_capacity;
|
||||
{
|
||||
__capacity = 2 * __old_capacity;
|
||||
// Never allocate a string bigger than _S_max_size.
|
||||
if (__capacity > size_type(_S_max_size))
|
||||
__capacity = size_type(_S_max_size);
|
||||
}
|
||||
|
||||
// NB: Need an array of char_type[__capacity], plus a terminating
|
||||
// null char_type() element.
|
||||
|
|
Loading…
Add table
Reference in a new issue