Fixes Android_JNI_FileRead behaviour where reading past the end of a file returns zero instead of the number of bytes read.
This commit is contained in:
parent
9a4128b20d
commit
e4b5104b91
1 changed files with 5 additions and 1 deletions
|
@ -591,9 +591,13 @@ extern "C" size_t Android_JNI_FileRead(SDL_RWops* ctx, void* buffer,
|
||||||
size_t size, size_t maxnum)
|
size_t size, size_t maxnum)
|
||||||
{
|
{
|
||||||
LocalReferenceHolder refs;
|
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;
|
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();
|
JNIEnv *mEnv = Android_JNI_GetEnv();
|
||||||
if (!refs.init(mEnv)) {
|
if (!refs.init(mEnv)) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue