diff options
| author | 2014-03-18 09:34:43 +0000 | |
|---|---|---|
| committer | 2014-03-18 09:34:43 +0000 | |
| commit | 7c0dfed535bd23ce7cce0f8c498a8d6d3f14ff0f (patch) | |
| tree | bc7c3c8a20f2bdf4d2c0c49e0c9e1ae25f7806c6 | |
| parent | d88d817498327462f42e50348239eac59147f310 (diff) | |
| parent | 2bb39d7a43fdb28ecdafd65ea4b89dc05c1ad7be (diff) | |
Merge "Pass int32_t for JNI calls to java Input/Output streams."
| -rw-r--r-- | core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp b/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp index da8f083059eb..2cb101515586 100644 --- a/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp +++ b/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp @@ -63,9 +63,14 @@ private: size_t bytesRead = 0; // read the bytes do { - size_t requested = size; - if (requested > fCapacity) + jint requested = 0; + if (size > static_cast<size_t>(fCapacity)) { requested = fCapacity; + } else { + // This is safe because requested is clamped to (jint) + // fCapacity. + requested = static_cast<jint>(size); + } jint n = env->CallIntMethod(fJavaInputStream, gInputStream_readMethodID, fJavaByteArray, 0, requested); @@ -120,7 +125,7 @@ private: JNIEnv* fEnv; jobject fJavaInputStream; // the caller owns this object jbyteArray fJavaByteArray; // the caller owns this object - size_t fCapacity; + jint fCapacity; size_t fBytesRead; bool fIsAtEnd; }; @@ -174,14 +179,18 @@ public: fCapacity = env->GetArrayLength(storage); } - virtual bool write(const void* buffer, size_t size) { + virtual bool write(const void* buffer, size_t size) { JNIEnv* env = fEnv; jbyteArray storage = fJavaByteArray; while (size > 0) { - size_t requested = size; - if (requested > fCapacity) { + jint requested = 0; + if (size > static_cast<size_t>(fCapacity)) { requested = fCapacity; + } else { + // This is safe because requested is clamped to (jint) + // fCapacity. + requested = static_cast<jint>(size); } env->SetByteArrayRegion(storage, 0, requested, @@ -216,7 +225,7 @@ private: JNIEnv* fEnv; jobject fJavaOutputStream; // the caller owns this object jbyteArray fJavaByteArray; // the caller owns this object - size_t fCapacity; + jint fCapacity; }; SkWStream* CreateJavaOutputStreamAdaptor(JNIEnv* env, jobject stream, |