From fde69fce63693f5065a09f7b981ce367e6616ea2 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Mon, 7 Oct 2002 10:09:39 +0000 Subject: [PATCH] Fixed a bug which crashed the BResource tests (sorry Ingo) git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1428 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/support/DataIO.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/kits/support/DataIO.cpp b/src/kits/support/DataIO.cpp index b489fc45d8..9066c7b038 100644 --- a/src/kits/support/DataIO.cpp +++ b/src/kits/support/DataIO.cpp @@ -395,25 +395,23 @@ BMallocIO::SetSize(off_t size) // size == 0, free the memory free(fData); fData = NULL; - fLength = 0; } else { // size != 0, see, if necessary to resize - size_t newSize = (size + fBlockSize - 1) / fBlockSize * fBlockSize; - if (newSize != fMallocSize) { + size = (size + fBlockSize - 1) / fBlockSize * fBlockSize; + if (size != fMallocSize) { // we need to resize - if (char *newData = static_cast(realloc(fData, newSize))) { + if (char *newData = static_cast(realloc(fData, size))) { // set the new area to 0 - if (newSize > fMallocSize) - memset(newData + fMallocSize, 0, newSize - fMallocSize); - if (fLength > newSize) - fLength = newSize; + if (size > fMallocSize) + memset(newData + fMallocSize, 0, size - fMallocSize); fData = newData; - fMallocSize = newSize; + fMallocSize = size; } else // couldn't alloc the memory error = B_NO_MEMORY; } } - + if (error == B_OK) + fLength = size; return error; }