Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sebastian Schrader
Kea
Commits
e6d1be1a
Commit
e6d1be1a
authored
May 08, 2013
by
Mukund Sivaraman
Browse files
[2850] Handle current_filename_ assignment causing an exception
parent
148c5bbf
Changes
2
Show whitespace changes
Inline
Side-by-side
src/lib/datasrc/memory/zone_table_segment_mapped.cc
View file @
e6d1be1a
...
...
@@ -153,7 +153,7 @@ ZoneTableSegmentMapped::processHeader(MemorySegmentMapped& segment,
return
(
true
);
}
void
MemorySegmentMapped
*
ZoneTableSegmentMapped
::
openReadWrite
(
const
std
::
string
&
filename
,
bool
create
)
{
...
...
@@ -179,10 +179,10 @@ ZoneTableSegmentMapped::openReadWrite(const std::string& filename,
}
}
mem_sgmt_
.
reset
(
segment
.
release
());
return
(
segment
.
release
());
}
void
MemorySegmentMapped
*
ZoneTableSegmentMapped
::
openReadOnly
(
const
std
::
string
&
filename
)
{
// In case the checksum or table header is missing, we throw. We
// want the segment to be automatically destroyed then.
...
...
@@ -229,7 +229,7 @@ ZoneTableSegmentMapped::openReadOnly(const std::string& filename) {
}
}
mem_sgmt_
.
reset
(
segment
.
release
());
return
(
segment
.
release
());
}
void
...
...
@@ -263,21 +263,26 @@ ZoneTableSegmentMapped::reset(MemorySegmentOpenMode mode,
sync
();
}
// In case current_filename_ below fails, we want the segment to be
// automatically destroyed.
std
::
auto_ptr
<
MemorySegmentMapped
>
segment
;
switch
(
mode
)
{
case
CREATE
:
openReadWrite
(
filename
,
true
);
segment
.
reset
(
openReadWrite
(
filename
,
true
)
)
;
break
;
case
READ_WRITE
:
openReadWrite
(
filename
,
false
);
segment
.
reset
(
openReadWrite
(
filename
,
false
)
)
;
break
;
case
READ_ONLY
:
openReadOnly
(
filename
);
segment
.
reset
(
openReadOnly
(
filename
)
)
;
}
current_mode_
=
mode
;
current_filename_
=
filename
;
current_mode_
=
mode
;
mem_sgmt_
.
reset
(
segment
.
release
());
}
void
...
...
src/lib/datasrc/memory/zone_table_segment_mapped.h
View file @
e6d1be1a
...
...
@@ -115,8 +115,9 @@ private:
bool
processHeader
(
isc
::
util
::
MemorySegmentMapped
&
segment
,
bool
create
,
std
::
string
&
error_msg
);
void
openReadWrite
(
const
std
::
string
&
filename
,
bool
create
);
void
openReadOnly
(
const
std
::
string
&
filename
);
isc
::
util
::
MemorySegmentMapped
*
openReadWrite
(
const
std
::
string
&
filename
,
bool
create
);
isc
::
util
::
MemorySegmentMapped
*
openReadOnly
(
const
std
::
string
&
filename
);
template
<
typename
T
>
T
*
getHeaderHelper
()
const
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment