RRClass rrclass) :
mem_sgmt_(mem_sgmt),
rrclass_(rrclass),
- zone_count_(0),
- zone_table_(ZoneTable::create(mem_sgmt_, rrclass)),
- file_name_tree_(FileNameTree::create(mem_sgmt_, false))
-{}
+ zone_count_(0)
+{
+ SegmentObjectHolder<ZoneTable, RRClass> holder(
+ mem_sgmt_, ZoneTable::create(mem_sgmt_, rrclass), rrclass_);
+
+ file_name_tree_ = FileNameTree::create(mem_sgmt_, false);
+
+ zone_table_ = holder.release();
+}
InMemoryClient::~InMemoryClient() {
FileNameDeleter deleter;
// Just to check that things get cleaned up
for (int i = 1; i < 16; i++) {
+ SCOPED_TRACE("For throw count = " + i);
mem_sgmt_.setThrowCount(i);
- EXPECT_THROW(client_->load(Name("example.org"),
- TEST_DATA_DIR "/example.org.zone"),
- std::bad_alloc);
+ EXPECT_THROW({
+ InMemoryClient client2(mem_sgmt_, zclass_);
+ client2.load(Name("example.org"),
+ TEST_DATA_DIR "/example.org.zone");
+ }, std::bad_alloc);
}
// Teardown checks for memory segment leaks
}