re PR libstdc++/31777 (GLIBCXX_FORCE_NEW doesn't always work in pool_allocator)
authorPaolo Carlini <pcarlini@suse.de>
Wed, 2 May 2007 18:37:00 +0000 (18:37 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Wed, 2 May 2007 18:37:00 +0000 (18:37 +0000)
2007-05-02  Paolo Carlini  <pcarlini@suse.de>

PR libstdc++/31777
* include/ext/pool_allocator.h (__pool_alloc<>::allocate,
__pool_alloc<>::deallocate): Fix _S_force_new check.

From-SVN: r124355

libstdc++-v3/ChangeLog
libstdc++-v3/include/ext/pool_allocator.h

index beb95ccd2bd8945320df07bc64b0d6efcfa0a5ed..1aee8b0baf8da03a4d6cd6b1d261e3a281fe7104 100644 (file)
@@ -1,3 +1,9 @@
+2007-05-02  Paolo Carlini  <pcarlini@suse.de>
+
+       PR libstdc++/31777
+       * include/ext/pool_allocator.h (__pool_alloc<>::allocate,
+       __pool_alloc<>::deallocate): Fix _S_force_new check.
+
 2007-05-01  Benjamin Kosnik  <bkoz@redhat.com>
        
        * 23_containers/requirements/sequences/dr438/deque/*: Move to...
index e78bf21778c251db5ef7c16c7ab457c19c4a1ad5..f9dcc7fc88db76a536ca54f8bf9be9708467449d 100644 (file)
@@ -1,6 +1,6 @@
 // Allocators -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -212,7 +212,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
            }
 
          const size_t __bytes = __n * sizeof(_Tp);           
-         if (__bytes > size_t(_S_max_bytes) || _S_force_new == 1)
+         if (__bytes > size_t(_S_max_bytes) || _S_force_new > 0)
            __ret = static_cast<_Tp*>(::operator new(__bytes));
          else
            {
@@ -241,7 +241,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
       if (__builtin_expect(__n != 0 && __p != 0, true))
        {
          const size_t __bytes = __n * sizeof(_Tp);
-         if (__bytes > static_cast<size_t>(_S_max_bytes) || _S_force_new == 1)
+         if (__bytes > static_cast<size_t>(_S_max_bytes) || _S_force_new > 0)
            ::operator delete(__p);
          else
            {