From 502d10e3ffc4b1ca454277ee48dcad6532cc2fc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 16 Sep 2002 15:07:36 +0000 Subject: [PATCH] Mike Nordell pointed me to the fact that BufferPool::ReleaseBuffers() didn't free anything if it couldn't acquire the semaphore. That allowed me to get aware of a possible bug in the destructor :-) git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1057 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/file_systems/bfs/BufferPool.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/file_systems/bfs/BufferPool.cpp b/src/add-ons/kernel/file_systems/bfs/BufferPool.cpp index 246bf3bf4d..d4e86e0f39 100644 --- a/src/add-ons/kernel/file_systems/bfs/BufferPool.cpp +++ b/src/add-ons/kernel/file_systems/bfs/BufferPool.cpp @@ -25,15 +25,19 @@ BufferPool::BufferPool() BufferPool::~BufferPool() { - delete_sem(fLock); delete_sem(fFreeBuffers); - + + acquire_sem(fLock); + // the return value doesn't interest us anymore + void **buffer = fFirstFree; while (buffer != NULL) { void **nextBuffer = (void **)*buffer; free(buffer); buffer = nextBuffer; } + + delete_sem(fLock); }