summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Narayan Kamath <narayan@google.com> 2014-03-18 09:34:43 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2014-03-18 09:34:43 +0000
commit7c0dfed535bd23ce7cce0f8c498a8d6d3f14ff0f (patch)
treebc7c3c8a20f2bdf4d2c0c49e0c9e1ae25f7806c6
parentd88d817498327462f42e50348239eac59147f310 (diff)
parent2bb39d7a43fdb28ecdafd65ea4b89dc05c1ad7be (diff)
Merge "Pass int32_t for JNI calls to java Input/Output streams."
-rw-r--r--core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp23
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,