From 46b306018a0eb402d449477d02aa3147133b8717 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Fri, 20 Jul 2012 15:22:48 -0300 Subject: [PATCH] Fixes Android_JNI_FileRead behaviour where reading past the end of a file returns zero instead of the number of bytes read. --- src/core/android/SDL_android.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/android/SDL_android.cpp b/src/core/android/SDL_android.cpp index aa69527c1..116ffd502 100755 --- a/src/core/android/SDL_android.cpp +++ b/src/core/android/SDL_android.cpp @@ -591,9 +591,13 @@ extern "C" size_t Android_JNI_FileRead(SDL_RWops* ctx, void* buffer, size_t size, size_t maxnum) { LocalReferenceHolder refs; - int bytesRemaining = size * maxnum; + jlong bytesRemaining = (jlong) (size * maxnum); + jlong bytesMax = (jlong) (ctx->hidden.androidio.size - ctx->hidden.androidio.position); int bytesRead = 0; + /* Don't read more bytes than those that remain in the file, otherwise we get an exception */ + if (bytesRemaining > bytesMax) bytesRemaining = bytesMax; + JNIEnv *mEnv = Android_JNI_GetEnv(); if (!refs.init(mEnv)) { return -1;