$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r85658 - in trunk: boost/container libs/container/doc
From: igaztanaga_at_[hidden]
Date: 2013-09-12 17:50:39
Author: igaztanaga
Date: 2013-09-12 17:50:38 EDT (Thu, 12 Sep 2013)
New Revision: 85658
URL: http://svn.boost.org/trac/boost/changeset/85658
Log:
Fixes #9108
Text files modified: 
   trunk/boost/container/vector.hpp       |     9 ++++++++-                               
   trunk/libs/container/doc/container.qbk |     5 +++--                                   
   2 files changed, 11 insertions(+), 3 deletions(-)
Modified: trunk/boost/container/vector.hpp
==============================================================================
--- trunk/boost/container/vector.hpp	Thu Sep 12 13:17:07 2013	(r85657)
+++ trunk/boost/container/vector.hpp	2013-09-12 17:50:38 EDT (Thu, 12 Sep 2013)	(r85658)
@@ -1634,7 +1634,11 @@
       const size_type sz = m_holder.m_size;
       ::boost::container::uninitialized_move_alloc_n_source
          ( this->m_holder.alloc(), raw_beg, sz, container_detail::to_raw_pointer(p) );
+      if(this->m_holder.capacity()){
+         if(!value_traits::trivial_dctr_after_move)
       boost::container::destroy_alloc_n(this->m_holder.alloc(), raw_beg, sz);
+         this->m_holder.deallocate(this->m_holder.start(), this->m_holder.capacity());
+      }
       this->m_holder.start(p);
       this->m_holder.capacity(new_cap);
    }
@@ -1677,7 +1681,6 @@
          }
          //New buffer
          else{
-            //Backwards (and possibly forward) expansion
             #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS
             ++this->num_alloc;
             #endif
@@ -1685,7 +1688,11 @@
             const size_type sz = m_holder.m_size;
             ::boost::container::uninitialized_move_alloc_n_source
                ( this->m_holder.alloc(), raw_beg, sz, container_detail::to_raw_pointer(ret.first) );
+            if(this->m_holder.capacity()){
+               if(!value_traits::trivial_dctr_after_move)
             boost::container::destroy_alloc_n(this->m_holder.alloc(), raw_beg, sz);
+               this->m_holder.deallocate(this->m_holder.start(), this->m_holder.capacity());
+            }
             this->m_holder.start(ret.first);
             this->m_holder.capacity(real_cap);
          }
Modified: trunk/libs/container/doc/container.qbk
==============================================================================
--- trunk/libs/container/doc/container.qbk	Thu Sep 12 13:17:07 2013	(r85657)
+++ trunk/libs/container/doc/container.qbk	2013-09-12 17:50:38 EDT (Thu, 12 Sep 2013)	(r85658)
@@ -720,8 +720,9 @@
 *  Fixed bugs [@https://svn.boost.org/trac/boost/ticket/8269 #8269],
               [@https://svn.boost.org/trac/boost/ticket/8473 #8473],
               [@https://svn.boost.org/trac/boost/ticket/8892 #8892],
-              [@https://svn.boost.org/trac/boost/ticket/9064 #9064].
-              [@https://svn.boost.org/trac/boost/ticket/9092 #9092].
+              [@https://svn.boost.org/trac/boost/ticket/9064 #9064],
+              [@https://svn.boost.org/trac/boost/ticket/9092 #9092],
+              [@https://svn.boost.org/trac/boost/ticket/9108 #9108].
 
 [endsect]