From: JINMEI Tatuya Date: Mon, 12 Mar 2012 05:33:09 +0000 (-0700) Subject: [1603] simplified the part of trimming exceessive renderer table space. X-Git-Tag: trac2351_base~226^2~116^2~121^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4dbcf3b666bf27ae2c3018007e163235e5c326e2;p=thirdparty%2Fkea.git [1603] simplified the part of trimming exceessive renderer table space. since we don't have to preserve the existing item in this context, we can simply swap the current vector with a newly created (with a reserved space) vector. --- diff --git a/src/lib/dns/messagerenderer.cc b/src/lib/dns/messagerenderer.cc index e704ba0ca1..1f087f8446 100644 --- a/src/lib/dns/messagerenderer.cc +++ b/src/lib/dns/messagerenderer.cc @@ -242,12 +242,11 @@ MessageRenderer::clear() { // subsequent use of the renderer. for (size_t i = 0; i < MessageRendererImpl::BUCKETS; ++i) { if (impl_->table_[i].size() > MessageRendererImpl::RESERVED_ITEMS) { - // Trim excessive capacity: reserve() invalidates the excessive - // items, and swap ensures the new capacity is only reasonably - // large for the reserved space. - impl_->table_[i].reserve(MessageRendererImpl::RESERVED_ITEMS); - vector(impl_->table_[i].begin(), - impl_->table_[i].end()).swap(impl_->table_[i]); + // Trim excessive capacity: swap ensures the new capacity is only + // reasonably large for the reserved space. + vector new_table; + new_table.reserve(MessageRendererImpl::RESERVED_ITEMS); + new_table.swap(impl_->table_[i]); } impl_->table_[i].clear(); }