From 92bb75d19f8b50bdf44014192be6e615550c8bc0 Mon Sep 17 00:00:00 2001 From: Mis012 Date: Mon, 27 May 2024 14:01:43 +0200 Subject: [PATCH] AssetManager: fix open and openNonAsset not throwing exception on error --- src/api-impl-jni/android_content_res_AssetManager.c | 2 +- src/api-impl/android/content/res/AssetManager.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/api-impl-jni/android_content_res_AssetManager.c b/src/api-impl-jni/android_content_res_AssetManager.c index d4310d7f..e9ef4315 100644 --- a/src/api-impl-jni/android_content_res_AssetManager.c +++ b/src/api-impl-jni/android_content_res_AssetManager.c @@ -24,7 +24,7 @@ JNIEXPORT jlong JNICALL Java_android_content_res_AssetManager_openAsset(JNIEnv * struct AssetManager *asset_manager = _PTR(_GET_LONG_FIELD(this, "mObject")); struct Asset *asset = AssetManager_openNonAsset(asset_manager, file_name, mode); - printf("AssetManager_openAsset(%p, %s, %d)\n", asset_manager, file_name, mode); + printf("AssetManager_openAsset(%p, %s, %d) returns %p\n", asset_manager, file_name, mode, asset); return _INTPTR(asset); } diff --git a/src/api-impl/android/content/res/AssetManager.java b/src/api-impl/android/content/res/AssetManager.java index f8135b4b..a0235174 100644 --- a/src/api-impl/android/content/res/AssetManager.java +++ b/src/api-impl/android/content/res/AssetManager.java @@ -311,6 +311,8 @@ public final class AssetManager { */ public final InputStream open(String fileName, int accessMode) throws IOException { long asset = openAsset("assets/" + fileName, accessMode); + if(asset == 0) + throw new FileNotFoundException("file: " + fileName); return new AssetInputStream(asset); } @@ -382,6 +384,8 @@ public final class AssetManager { */ public final InputStream openNonAsset(int cookie, String fileName, int accessMode) throws IOException { long asset = openAsset(fileName, accessMode); + if(asset == 0) + throw new FileNotFoundException("file: " + fileName); return new AssetInputStream(asset); }