From: Mukund Sivaraman Date: Thu, 9 May 2013 12:14:49 +0000 (+0530) Subject: [2850] Destroy ZoneTableSegment object upon exception (see full log) X-Git-Tag: bind10-1.2.0beta1-release~467^2~19 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4cac3ddb232eac0e52451c0aff718f3207fc7977;p=thirdparty%2Fkea.git [2850] Destroy ZoneTableSegment object upon exception (see full log) Ideally, this should use something like a SegmentObjectHolder, but a SegmentObjectHolder takes unnecessary arguments. In this limited usecase, ZoneTableSegment::destroy() just calls its destructor, so std::auto_ptr should be ok here. --- diff --git a/src/lib/datasrc/tests/memory/zone_table_segment_mapped_unittest.cc b/src/lib/datasrc/tests/memory/zone_table_segment_mapped_unittest.cc index d7bffa1d01..8a6fcaf03a 100644 --- a/src/lib/datasrc/tests/memory/zone_table_segment_mapped_unittest.cc +++ b/src/lib/datasrc/tests/memory/zone_table_segment_mapped_unittest.cc @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -51,17 +52,17 @@ protected: Element::fromJSON( "{\"mapped-file\": \"" + std::string(mapped_file2) + "\"}")) { - EXPECT_NE(static_cast(NULL), ztable_segment_); + EXPECT_NE(static_cast(NULL), ztable_segment_.get()); // Verify that a ZoneTableSegmentMapped is created. ZoneTableSegmentMapped* mapped_segment = - dynamic_cast(ztable_segment_); + dynamic_cast(ztable_segment_.get()); EXPECT_NE(static_cast(NULL), mapped_segment); createTestData(); } ~ZoneTableSegmentMappedTest() { - ZoneTableSegment::destroy(ztable_segment_); + ZoneTableSegment::destroy(ztable_segment_.release()); boost::interprocess::file_mapping::remove(mapped_file); boost::interprocess::file_mapping::remove(mapped_file2); } @@ -81,7 +82,9 @@ protected: void addData(MemorySegment& segment); bool verifyData(const MemorySegment& segment); - ZoneTableSegment* ztable_segment_; + // Ideally, this should be something similar to a + // SegmentObjectHolder, not an auto_ptr. + std::auto_ptr ztable_segment_; const ConstElementPtr config_params_; const ConstElementPtr config_params2_; std::vector test_data_;