diff --git a/cache.h b/cache.h index 54251fb..0d7db5a 100644 --- a/cache.h +++ b/cache.h @@ -8,6 +8,7 @@ #include #include #include +#include #include //---------------------------------------------------------------- @@ -182,17 +183,11 @@ namespace base { cache::insert(value_type const &v) { make_space(); - // FIXME: use an auto_ptr to avoid the explicit try/catch - value_entry *node = new value_entry(v); - try { - value_ptr_cmp cmp; - lookup_algo::insert_equal(&lookup_header_, &lookup_header_, node, cmp); - current_entries_++; - - } catch (...) { - delete node; - throw; - } + std::auto_ptr node(new value_entry(v)); + value_ptr_cmp cmp; + lookup_algo::insert_equal(&lookup_header_, &lookup_header_, node.get(), cmp); + node.release(); + current_entries_++; } template