basic_string.tcc (_Rep::_S_create): Never allocate a string bigger than max_size()...
2004-01-30 Paolo Carlini <pcarlini@suse.de> * include/bits/basic_string.tcc (_Rep::_S_create): Never allocate a string bigger than max_size(); always keep __capacity and __size in sync to avoid memory leaks at deallocation time. From-SVN: r76955
This commit is contained in:
parent
1e0f41c9d2
commit
d1615643e5
@ -1,3 +1,10 @@
|
||||
2004-01-30 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
* include/bits/basic_string.tcc (_Rep::_S_create):
|
||||
Never allocate a string bigger than max_size(); always keep
|
||||
__capacity and __size in sync to avoid memory leaks at
|
||||
deallocation time.
|
||||
|
||||
2004-01-30 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
* include/bits/basic_string.tcc (_S_construct(_InIterator,
|
||||
|
@ -520,7 +520,10 @@ namespace std
|
||||
- (__size + __malloc_header_size)
|
||||
% __pagesize);
|
||||
__capacity += __extra / sizeof(_CharT);
|
||||
__size += __extra;
|
||||
// Never allocate a string bigger than _S_max_size.
|
||||
if (__capacity > _S_max_size)
|
||||
__capacity = _S_max_size;
|
||||
__size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
|
||||
}
|
||||
else if (__size > __subpagesize)
|
||||
{
|
||||
@ -528,7 +531,7 @@ namespace std
|
||||
- (__size + __malloc_header_size)
|
||||
% __subpagesize);
|
||||
__capacity += __extra / sizeof(_CharT);
|
||||
__size += __extra;
|
||||
__size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
|
||||
}
|
||||
|
||||
// NB: Might throw, but no worries about a leak, mate: _Rep()
|
||||
|
Loading…
Reference in New Issue
Block a user