From 19f3bae0716c4eb7dd2a5716778560580be68071 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Tue, 11 Feb 2014 17:51:22 +0100 Subject: [PATCH] Fix more issues detected by gcc4 compiler: More ssize_t/status_t mixup. --- headers/os/package/hpkg/BufferDataOutput.h | 2 +- .../packagefs/package/CachedDataReader.cpp | 11 ++++++----- .../file_systems/packagefs/package/PackageFile.cpp | 2 +- src/kits/package/hpkg/BufferDataOutput.cpp | 4 ++-- src/kits/package/hpkg/DataReader.cpp | 5 ++++- src/kits/package/hpkg/PackageFileHeapAccessorBase.cpp | 2 +- src/kits/package/hpkg/ZlibCompressor.cpp | 4 ++-- src/kits/package/hpkg/v1/PackageDataReaderV1.cpp | 4 ++-- 8 files changed, 19 insertions(+), 15 deletions(-) diff --git a/headers/os/package/hpkg/BufferDataOutput.h b/headers/os/package/hpkg/BufferDataOutput.h index 10af41c40f..7499f98104 100644 --- a/headers/os/package/hpkg/BufferDataOutput.h +++ b/headers/os/package/hpkg/BufferDataOutput.h @@ -21,7 +21,7 @@ public: size_t BytesWritten() const { return fBytesWritten; } - virtual status_t Write(const void* buffer, size_t size); + virtual ssize_t Write(const void* buffer, size_t size); virtual ssize_t Read(void* buffer, size_t size) { return B_NOT_SUPPORTED; } diff --git a/src/add-ons/kernel/file_systems/packagefs/package/CachedDataReader.cpp b/src/add-ons/kernel/file_systems/packagefs/package/CachedDataReader.cpp index 5c57865f1c..2a8b798164 100644 --- a/src/add-ons/kernel/file_systems/packagefs/package/CachedDataReader.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/package/CachedDataReader.cpp @@ -40,8 +40,9 @@ struct CachedDataReader::PagesDataOutput : public BDataIO { { } - virtual status_t Write(const void* buffer, size_t size) + virtual ssize_t Write(const void* buffer, size_t size) { + size_t totalSize = size; while (size > 0) { if (fPageCount == 0) return B_BAD_VALUE; @@ -50,7 +51,7 @@ struct CachedDataReader::PagesDataOutput : public BDataIO { status_t error = vm_memcpy_to_physical( fPages[0]->physical_page_number * B_PAGE_SIZE + fInPageOffset, buffer, toCopy, false); - if (error != B_OK) + if (error < B_OK) return error; fInPageOffset += toCopy; @@ -64,7 +65,7 @@ struct CachedDataReader::PagesDataOutput : public BDataIO { size -= toCopy; } - return B_OK; + return totalSize; } virtual ssize_t Read(void* buffer, size_t size) @@ -160,7 +161,7 @@ CachedDataReader::ReadDataToOutput(off_t offset, size_t size, // transfer the data of the cache line status_t error = _ReadCacheLine(lineOffset, cacheLineEnd - lineOffset, offset, requestLineLength, output); - if (error != B_OK) + if (error < B_OK) return error; offset = cacheLineEnd; @@ -399,7 +400,7 @@ CachedDataReader::_WritePages(vm_page** pages, size_t pagesRelativeOffset, // unmap the page vm_put_physical_page(address, handle); - if (error != B_OK) + if (error < B_OK) return error; inPageOffset = 0; diff --git a/src/add-ons/kernel/file_systems/packagefs/package/PackageFile.cpp b/src/add-ons/kernel/file_systems/packagefs/package/PackageFile.cpp index 437408435b..62ec01fda8 100644 --- a/src/add-ons/kernel/file_systems/packagefs/package/PackageFile.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/package/PackageFile.cpp @@ -37,7 +37,7 @@ public: { } - virtual status_t Write(const void* buffer, size_t size) + virtual ssize_t Write(const void* buffer, size_t size) { RETURN_ERROR(write_to_io_request(fRequest, buffer, size)); } diff --git a/src/kits/package/hpkg/BufferDataOutput.cpp b/src/kits/package/hpkg/BufferDataOutput.cpp index 8ae25437a4..4009ddf772 100644 --- a/src/kits/package/hpkg/BufferDataOutput.cpp +++ b/src/kits/package/hpkg/BufferDataOutput.cpp @@ -26,7 +26,7 @@ BBufferDataOutput::BBufferDataOutput(void* buffer, size_t size) } -status_t +ssize_t BBufferDataOutput::Write(const void* buffer, size_t size) { if (size == 0) @@ -37,7 +37,7 @@ BBufferDataOutput::Write(const void* buffer, size_t size) memcpy((uint8*)fBuffer + fBytesWritten, buffer, size); fBytesWritten += size; - return B_OK; + return size; } diff --git a/src/kits/package/hpkg/DataReader.cpp b/src/kits/package/hpkg/DataReader.cpp index eb1a81c762..47893bb5eb 100644 --- a/src/kits/package/hpkg/DataReader.cpp +++ b/src/kits/package/hpkg/DataReader.cpp @@ -82,7 +82,10 @@ BBufferDataReader::ReadDataToOutput(off_t offset, size_t size, if (size > fSize || offset > (off_t)fSize - (off_t)size) return B_ERROR; - return output->Write((const uint8*)fData + offset, size); + ssize_t result = output->Write((const uint8*)fData + offset, size); + if (result > B_OK) + return B_OK; + return result; } diff --git a/src/kits/package/hpkg/PackageFileHeapAccessorBase.cpp b/src/kits/package/hpkg/PackageFileHeapAccessorBase.cpp index 3ffa2a8756..447c375aec 100644 --- a/src/kits/package/hpkg/PackageFileHeapAccessorBase.cpp +++ b/src/kits/package/hpkg/PackageFileHeapAccessorBase.cpp @@ -176,7 +176,7 @@ PackageFileHeapAccessorBase::ReadDataToOutput(off_t offset, size_t size, // harm. error = output->Write((char*)uncompressedDataBuffer + inChunkOffset, toWrite); - if (error != B_OK) + if (error < B_OK) return error; remainingBytes -= toWrite; diff --git a/src/kits/package/hpkg/ZlibCompressor.cpp b/src/kits/package/hpkg/ZlibCompressor.cpp index b9e6e6fc64..723dbb31e3 100644 --- a/src/kits/package/hpkg/ZlibCompressor.cpp +++ b/src/kits/package/hpkg/ZlibCompressor.cpp @@ -84,7 +84,7 @@ ZlibCompressor::CompressNext(const void* input, size_t inputSize) if (fStream.avail_out < sizeof(outputBuffer)) { status_t error = fOutput->Write(outputBuffer, sizeof(outputBuffer) - fStream.avail_out); - if (error != B_OK) + if (error < B_OK) return error; } } @@ -111,7 +111,7 @@ ZlibCompressor::Finish() if (fStream.avail_out < sizeof(outputBuffer)) { status_t error = fOutput->Write(outputBuffer, sizeof(outputBuffer) - fStream.avail_out); - if (error != B_OK) + if (error < B_OK) return error; } diff --git a/src/kits/package/hpkg/v1/PackageDataReaderV1.cpp b/src/kits/package/hpkg/v1/PackageDataReaderV1.cpp index 6fd4f4ae42..2679b74b73 100644 --- a/src/kits/package/hpkg/v1/PackageDataReaderV1.cpp +++ b/src/kits/package/hpkg/v1/PackageDataReaderV1.cpp @@ -126,7 +126,7 @@ public: // write to the output error = output->Write(buffer->Buffer(), toRead); - if (error != B_OK) + if (error < B_OK) return error; offset += toRead; @@ -246,7 +246,7 @@ public: size_t toCopy = std::min(size, (size_t)fChunkSize - inChunkOffset); error = output->Write( (uint8*)fUncompressBuffer->Buffer() + inChunkOffset, toCopy); - if (error != B_OK) + if (error < B_OK) return error; size -= toCopy;