diff options
| author | Ruben Brunk <rubenbrunk@google.com> | 2015-01-09 23:33:46 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-01-09 23:33:49 +0000 |
| commit | 8c52d9a092452837e7222d8416c3b4accf9a99d7 (patch) | |
| tree | d639d666e73292d1d0aac78cb5e1c0320a5039b1 | |
| parent | a97fe1387df731ddbbdae7c75dfbdfa4f1eb0339 (diff) | |
| parent | a3fdec8dac09b178d642c07a538c42faf84c2aaa (diff) | |
| download | frameworks_base-8c52d9a092452837e7222d8416c3b4accf9a99d7.zip frameworks_base-8c52d9a092452837e7222d8416c3b4accf9a99d7.tar.gz frameworks_base-8c52d9a092452837e7222d8416c3b4accf9a99d7.tar.bz2 | |
Merge "Camera2: Fix early EOF in DngCreator#writeByteBuffer." into lmp-mr1-dev
| -rw-r--r-- | core/jni/android_hardware_camera2_DngCreator.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/core/jni/android_hardware_camera2_DngCreator.cpp b/core/jni/android_hardware_camera2_DngCreator.cpp index 533313a..7361858 100644 --- a/core/jni/android_hardware_camera2_DngCreator.cpp +++ b/core/jni/android_hardware_camera2_DngCreator.cpp @@ -35,6 +35,7 @@ #include <cutils/properties.h> #include <string.h> +#include <inttypes.h> #include "android_runtime/AndroidRuntime.h" #include "android_runtime/android_hardware_camera2_CameraMetadata.h" @@ -360,15 +361,18 @@ ssize_t JniInputByteBuffer::read(uint8_t* buf, size_t offset, size_t count) { realCount = count; } - mEnv->CallObjectMethod(mInBuf, gInputByteBufferClassInfo.mGetMethod, mByteArray, 0, + jobject chainingBuf = mEnv->CallObjectMethod(mInBuf, gInputByteBufferClassInfo.mGetMethod, mByteArray, 0, realCount); + mEnv->DeleteLocalRef(chainingBuf); if (mEnv->ExceptionCheck()) { + ALOGE("%s: Exception while reading from input into byte buffer.", __FUNCTION__); return BAD_VALUE; } mEnv->GetByteArrayRegion(mByteArray, 0, realCount, reinterpret_cast<jbyte*>(buf + offset)); if (mEnv->ExceptionCheck()) { + ALOGE("%s: Exception while reading from byte buffer.", __FUNCTION__); return BAD_VALUE; } return realCount; @@ -469,15 +473,17 @@ status_t InputStripSource::writeToStream(Output& stream, uint32_t count) { for (uint32_t i = 0; i < mHeight; ++i) { size_t rowFillAmt = 0; - size_t rowSize = mPixStride; + size_t rowSize = mRowStride; while (rowFillAmt < mRowStride) { ssize_t bytesRead = mInput->read(rowBytes, rowFillAmt, rowSize); if (bytesRead <= 0) { if (bytesRead == NOT_ENOUGH_DATA || bytesRead == 0) { + ALOGE("%s: Early EOF on row %" PRIu32 ", received bytesRead %zd", + __FUNCTION__, i, bytesRead); jniThrowExceptionFmt(mEnv, "java/io/IOException", - "Early EOF encountered, not enough pixel data for image of size %u", - fullSize); + "Early EOF encountered, not enough pixel data for image of size %" + PRIu32, fullSize); bytesRead = NOT_ENOUGH_DATA; } else { if (!mEnv->ExceptionCheck()) { |
