From 2b1003a09a4a48a754e7d17fb4dfd66675b8662e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 25 Mar 2008 12:52:30 +0000 Subject: [PATCH] * The DeviceOpener class was leaking its block cache; RemoveCache() would never do anything as fBlockCache was never set. * DeviceOpener::InitCache() did not always correctly propagate the read-only flag. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24572 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/file_systems/bfs/Volume.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/file_systems/bfs/Volume.cpp b/src/add-ons/kernel/file_systems/bfs/Volume.cpp index 62ce2ca6d1..20bd4e2021 100644 --- a/src/add-ons/kernel/file_systems/bfs/Volume.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Volume.cpp @@ -74,7 +74,7 @@ DeviceOpener::DeviceOpener(int fd, int mode) DeviceOpener::~DeviceOpener() { - if (fDevice >= B_OK) { + if (fDevice >= 0) { RemoveCache(false); close(fDevice); } @@ -129,7 +129,8 @@ DeviceOpener::Open(int fd, int mode) void * DeviceOpener::InitCache(off_t numBlocks, uint32 blockSize) { - return block_cache_create(fDevice, numBlocks, blockSize, fMode == O_RDONLY); + return fBlockCache = block_cache_create(fDevice, numBlocks, blockSize, + IsReadOnly()); }