summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2009-11-25 13:52:38 +0000
committerMatthew Sackman <matthew@lshift.net>2009-11-25 13:52:38 +0000
commit9a90caea595220767033c14a68e5de5c834d70b4 (patch)
tree68293da6f39496dfd7cf8e8ac28bbd3461ae87a1 /src
parent9fa61279a0b00ee622c336b0c6c12fa2f983bf21 (diff)
downloadrabbitmq-server-git-9a90caea595220767033c14a68e5de5c834d70b4.tar.gz
Make sure that trusted_offset in open1 is set to an absolute offset
Diffstat (limited to 'src')
-rw-r--r--src/file_handle_cache.erl9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/file_handle_cache.erl b/src/file_handle_cache.erl
index a3ebd7a59e..dbfffff4b6 100644
--- a/src/file_handle_cache.erl
+++ b/src/file_handle_cache.erl
@@ -414,15 +414,16 @@ open1(Path, Mode, Options, Ref, Offset) ->
end,
Now = now(),
Handle =
- #handle { hdl = Hdl, offset = 0, trusted_offset = Offset,
+ #handle { hdl = Hdl, offset = 0, trusted_offset = 0,
write_buffer_size = 0, options = Options,
write_buffer_size_limit = WriteBufferSize,
write_buffer = [], at_eof = false, mode = Mode,
is_write = is_writer(Mode), is_read = is_reader(Mode),
path = Path, last_used_at = Now,
is_dirty = false },
- {{ok, _Offset}, Handle1} = maybe_seek(Offset, Handle),
- put({Ref, fhc_handle}, Handle1),
+ {{ok, Offset1}, Handle1} = maybe_seek(Offset, Handle),
+ Handle2 = Handle1 #handle { trusted_offset = Offset1 },
+ put({Ref, fhc_handle}, Handle2),
with_age_tree(fun (Tree) ->
Tree1 = gb_trees:insert(Now, Ref, Tree),
{Oldest, _Ref} = gb_trees:smallest(Tree1),
@@ -430,7 +431,7 @@ open1(Path, Mode, Options, Ref, Offset) ->
{open, self(), Oldest}),
Tree1
end),
- {ok, Handle1};
+ {ok, Handle2};
{error, Reason} ->
{error, Reason}
end.