diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp b/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp index a285def..007757f 100644 --- a/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp +++ b/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp @@ -52,7 +52,7 @@ public: return 0; } - if (n <= 0) { + if (n < 0) { // n == 0 should not be possible, see InputStream read() specifications. break; // eof } @@ -76,17 +76,19 @@ public: size_t doSkip(size_t size) { JNIEnv* env = fEnv; + jlong skipped = env->CallLongMethod(fJavaInputStream, gInputStream_skipMethodID, (jlong)size); if (env->ExceptionCheck()) { env->ExceptionDescribe(); env->ExceptionClear(); - SkDebugf("------- available threw an exception\n"); + SkDebugf("------- skip threw an exception\n"); return 0; } if (skipped < 0) { skipped = 0; } + return (size_t)skipped; } @@ -115,7 +117,7 @@ public: */ size_t amountSkipped = 0; do { - size_t amount = this->doSkip(size); + size_t amount = this->doSkip(size - amountSkipped); if (0 == amount) { char tmp; amount = this->doRead(&tmp, 1); |