From c9ea158353ed1e8add57ff9ee37baea97692cd4c Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Tue, 24 Sep 2002 19:04:22 +0000 Subject: [PATCH] Write() Returns B_NO_MEMORY if it cant allocate memory iVS: ---------------------------------------------------------------------- git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1162 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/support/DataIO.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/kits/support/DataIO.cpp b/src/kits/support/DataIO.cpp index ea427828fe..7dd3f3b3fd 100644 --- a/src/kits/support/DataIO.cpp +++ b/src/kits/support/DataIO.cpp @@ -341,16 +341,18 @@ BMallocIO::WriteAt(off_t pos, const void *buffer, size_t size) size_t newSize = max(pos + size, static_cast(fLength)); - if (newSize > fMallocSize) - if (SetSize(newSize) != B_OK) - size = 0; + status_t error = B_OK; - if (size > 0) { + if (newSize > fMallocSize) + error = SetSize(newSize); + + if (error == B_OK) { memcpy(fData + pos, buffer, size); if (pos + size > fLength) fLength = pos + size; } - return size; + + return error != B_OK ? error : size; }