re PR libstdc++/17780 (std::allocator vs. static init)
2004-10-06 Benjamin Kosnik <bkoz@redhat.com> Paolo Carlini <pcarlini@suse.de> PR libstdc++/17780 * src/mt_allocator.cc (__pool<true>::_M_reserve_block): Revert to old locking order. Co-Authored-By: Paolo Carlini <pcarlini@suse.de> From-SVN: r88611
This commit is contained in:
parent
3b0cff13e4
commit
8470634361
|
@ -1,3 +1,10 @@
|
|||
2004-10-06 Benjamin Kosnik <bkoz@redhat.com>
|
||||
Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
PR libstdc++/17780
|
||||
* src/mt_allocator.cc (__pool<true>::_M_reserve_block): Revert
|
||||
to old locking order.
|
||||
|
||||
2004-10-06 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
* include/std/std_sstream.h (_M_sync): When the caller is
|
||||
|
|
|
@ -298,10 +298,13 @@ namespace __gnu_cxx
|
|||
_Block_record* __block = NULL;
|
||||
if (__gthread_active_p())
|
||||
{
|
||||
__gthread_mutex_lock(__bin._M_mutex);
|
||||
if (__bin._M_first[0] == NULL)
|
||||
{
|
||||
// No need to hold the lock when we are adding a whole
|
||||
// chunk to our own list.
|
||||
__gthread_mutex_unlock(__bin._M_mutex);
|
||||
|
||||
void* __v = ::operator new(__options._M_chunk_size);
|
||||
__bin._M_first[__thread_id] = static_cast<_Block_record*>(__v);
|
||||
__bin._M_free[__thread_id] = __block_count;
|
||||
|
@ -327,7 +330,6 @@ namespace __gnu_cxx
|
|||
// Is the number of required blocks greater than or equal
|
||||
// to the number that can be provided by the global free
|
||||
// list?
|
||||
__gthread_mutex_lock(__bin._M_mutex);
|
||||
__bin._M_first[__thread_id] = __bin._M_first[0];
|
||||
if (__block_count >= __bin._M_free[0])
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue