From fae99f156ea9dafc4808c0b4a572535a65a89ce0 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Fri, 14 Mar 2008 22:03:26 +0000 Subject: [PATCH] cached_block::Compare() was ignoring the upper 32 bit of the block number. Was a problem only for partitions > 2^32 * block size (4TB for 1KB blocks). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24393 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/cache/block_cache.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/system/kernel/cache/block_cache.cpp b/src/system/kernel/cache/block_cache.cpp index 421c81748f..0b4375c0c4 100644 --- a/src/system/kernel/cache/block_cache.cpp +++ b/src/system/kernel/cache/block_cache.cpp @@ -296,7 +296,11 @@ cached_block::Compare(void *_cacheEntry, const void *_block) cached_block *cacheEntry = (cached_block *)_cacheEntry; const off_t *block = (const off_t *)_block; - return cacheEntry->block_number - *block; + off_t diff = cacheEntry->block_number - *block; + if (diff > 0) + return 1; + + return diff < 0 ? -1 : 0; }