From 57bf0605633bf285b93cc338b7f1692e7a17e35b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 4 Oct 2004 21:03:31 +0000 Subject: [PATCH] Fixed another stupid bug in the file cache: when the first read was a partial read over two blocks, some memory behind that memory could be trashed. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9188 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/core/cache/file_cache.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/kernel/core/cache/file_cache.cpp b/src/kernel/core/cache/file_cache.cpp index 4bb4e1656b..22d32cd0fe 100644 --- a/src/kernel/core/cache/file_cache.cpp +++ b/src/kernel/core/cache/file_cache.cpp @@ -166,6 +166,7 @@ readwrite_pages(file_cache_ref *ref, off_t offset, const iovec *vecs, size_t cou totalSize += size; } + return B_OK; } @@ -173,7 +174,7 @@ readwrite_pages(file_cache_ref *ref, off_t offset, const iovec *vecs, size_t cou static status_t read_from_cache(file_cache_ref *ref, off_t offset, size_t size, addr_t buffer, size_t bufferSize) { - TRACE(("read_from_cache: ref = %p, offset = %Ld, size = %lu\n", ref, offset, bufferSize)); + TRACE(("read_from_cache: ref = %p, offset = %Ld, size = %lu, buffer = %p, bufferSize = %lu\n", ref, offset, size, (void *)buffer, bufferSize)); iovec vecs[MAX_IO_VECS]; int32 vecCount = 0; @@ -382,7 +383,7 @@ readwrite(void *_cacheRef, off_t offset, addr_t bufferBase, size_t *_size, bool vm_put_physical_page(virtualAddress); - bufferBase += B_PAGE_SIZE; + bufferBase += B_PAGE_SIZE - pageOffset; pageOffset = 0; if (bytesLeft <= B_PAGE_SIZE) {