diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 48d0edee2..0662e60f5 100644 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -688,12 +688,23 @@ public class SDLActivity extends Activity { /** * This method is called by SDL using JNI. + * @return an InputStream on success or null if no expansion file was used. + * @throws IOException on errors. Message is set for the SDL error message. */ public InputStream openAPKExpansionInputStream(String fileName) throws IOException { // Get a ZipResourceFile representing a merger of both the main and patch files if (expansionFile == null) { - Integer mainVersion = Integer.valueOf(nativeGetHint("SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION")); - Integer patchVersion = Integer.valueOf(nativeGetHint("SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION")); + String mainHint = nativeGetHint("SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"); + if (mainHint == null) { + return null; // no expansion use if no main version was set + } + String patchHint = nativeGetHint("SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION"); + if (patchHint == null) { + return null; // no expansion use if no patch version was set + } + + Integer mainVersion = Integer.valueOf(mainHint); + Integer patchVersion = Integer.valueOf(patchHint); try { // To avoid direct dependency on Google APK expansion library that is diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index d16d4be1e..96cc48699 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -790,7 +790,10 @@ fallback: "openAPKExpansionInputStream", "(Ljava/lang/String;)Ljava/io/InputStream;"); inputStream = (*mEnv)->CallObjectMethod(mEnv, context, mid, fileNameJString); - if (Android_JNI_ExceptionOccurred(SDL_FALSE)) { + /* Exception is checked first because it always needs to be cleared. + * If no exception occurred then the last SDL error message is kept. + */ + if (Android_JNI_ExceptionOccurred(SDL_FALSE) || !inputStream) { goto failure; } }