Merge "Report error correctly for the implementation of StreamInterface::GetData()" into nyc-dev

This commit is contained in:
Yujie Qin
2016-06-16 19:48:18 +00:00
committed by Android (Google) Code Review

View File

@@ -68,8 +68,12 @@ piex::Error BufferedStream::GetData(
if (sizeToRead <= kMinSizeToRead) { if (sizeToRead <= kMinSizeToRead) {
sizeToRead = kMinSizeToRead; sizeToRead = kMinSizeToRead;
} }
void* tempBuffer = malloc(sizeToRead); void* tempBuffer = malloc(sizeToRead);
if (tempBuffer != NULL) { if (tempBuffer == NULL) {
return piex::Error::kFail;
}
size_t bytesRead = mStream->read(tempBuffer, sizeToRead); size_t bytesRead = mStream->read(tempBuffer, sizeToRead);
if (bytesRead != sizeToRead) { if (bytesRead != sizeToRead) {
free(tempBuffer); free(tempBuffer);
@@ -78,7 +82,6 @@ piex::Error BufferedStream::GetData(
mStreamBuffer.write(tempBuffer, bytesRead); mStreamBuffer.write(tempBuffer, bytesRead);
free(tempBuffer); free(tempBuffer);
} }
}
// Read bytes. // Read bytes.
if (mStreamBuffer.read((void*)data, offset, length)) { if (mStreamBuffer.read((void*)data, offset, length)) {
@@ -126,8 +129,8 @@ piex::Error FileStream::GetData(
size_t size = fread((void*)data, sizeof(std::uint8_t), length, mFile); size_t size = fread((void*)data, sizeof(std::uint8_t), length, mFile);
mPosition += size; mPosition += size;
// Handle errors. // Handle errors and verify the size.
if (ferror(mFile)) { if (ferror(mFile) || size != length) {
ALOGV("GetData read failed: (offset: %zu, length: %zu)", offset, length); ALOGV("GetData read failed: (offset: %zu, length: %zu)", offset, length);
return piex::Error::kFail; return piex::Error::kFail;
} }