BIND 10 trac2850_2, updated. 17590957db6a352e86c208c3520a340349b340ea [2850] Throw std::bad_alloc if ZoneTable::create() throws MemorySegmentGrown
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri May 10 14:26:25 UTC 2013
The branch, trac2850_2 has been updated
via 17590957db6a352e86c208c3520a340349b340ea (commit)
from e2889aabb93e201bfaf49046472ffc42df8b4b77 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 17590957db6a352e86c208c3520a340349b340ea
Author: Mukund Sivaraman <muks at isc.org>
Date: Fri May 10 19:55:40 2013 +0530
[2850] Throw std::bad_alloc if ZoneTable::create() throws MemorySegmentGrown
We don't attempt to recover in this case.
Also change some error handling to simply asserts.
-----------------------------------------------------------------------
Summary of changes:
.../datasrc/memory/zone_table_segment_mapped.cc | 35 +++++++-------------
1 file changed, 12 insertions(+), 23 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/memory/zone_table_segment_mapped.cc b/src/lib/datasrc/memory/zone_table_segment_mapped.cc
index 362263c..f199e3d 100644
--- a/src/lib/datasrc/memory/zone_table_segment_mapped.cc
+++ b/src/lib/datasrc/memory/zone_table_segment_mapped.cc
@@ -97,16 +97,7 @@ ZoneTableSegmentMapped::processChecksum(MemorySegmentMapped& segment,
*static_cast<size_t*>(checksum) = 0;
const bool grew = segment.setNamedAddress(ZONE_TABLE_CHECKSUM_NAME,
checksum);
- if (grew) {
- // If the segment grew here, we have a problem as the
- // checksum address may no longer be valid. In this case, we
- // cannot recover. This case is extremely unlikely as we
- // reserved memory for the ZONE_TABLE_CHECKSUM_NAME
- // above. It indicates a very restrictive MemorySegment
- // which we should not use.
- error_msg = "Segment grew unexpectedly in setNamedAddress()";
- return (false);
- }
+ assert(!grew);
}
return (true);
@@ -141,19 +132,17 @@ ZoneTableSegmentMapped::processHeader(MemorySegmentMapped& segment,
// Do nothing and try again.
}
}
- ZoneTableHeader* new_header = new(ptr)
- ZoneTableHeader(ZoneTable::create(segment, rrclass_));
- const bool grew = segment.setNamedAddress(ZONE_TABLE_HEADER_NAME,
- new_header);
- if (grew) {
- // If the segment grew here, we have a problem as the table
- // header address may no longer be valid. In this case, we
- // cannot recover. This case is extremely unlikely as we
- // reserved memory for the ZONE_TABLE_HEADER_NAME above. It
- // indicates a very restrictive MemorySegment which we
- // should not use.
- error_msg = "Segment grew unexpectedly in setNamedAddress()";
- return (false);
+ try {
+ ZoneTableHeader* new_header = new(ptr)
+ ZoneTableHeader(ZoneTable::create(segment, rrclass_));
+ const bool grew = segment.setNamedAddress(ZONE_TABLE_HEADER_NAME,
+ new_header);
+ assert(!grew);
+ } catch (const MemorySegmentGrown&) {
+ // This is extremely unlikely and we just throw a fatal
+ // exception here without attempting to recover.
+
+ throw std::bad_alloc();
}
}
More information about the bind10-changes
mailing list