summaryrefslogtreecommitdiffstats
path: root/core/jni/android_util_AssetManager.cpp
diff options
context:
space:
mode:
authorCarl Shapiro <cshapiro@google.com>2011-03-03 14:22:28 -0800
committerCarl Shapiro <cshapiro@google.com>2011-03-03 14:22:28 -0800
commitc1318babb44dded89b88fb5df950b5cd6c6f83da (patch)
tree838468e994394ad819020084fec34262de8de92c /core/jni/android_util_AssetManager.cpp
parent84af86c4ddac6e8a0e267d4e6309f7d51f4b03d2 (diff)
downloadframeworks_base-c1318babb44dded89b88fb5df950b5cd6c6f83da.zip
frameworks_base-c1318babb44dded89b88fb5df950b5cd6c6f83da.tar.gz
frameworks_base-c1318babb44dded89b88fb5df950b5cd6c6f83da.tar.bz2
Establish a global reference before saving a class into a global.
A local reference is obtained to the string class for the purpose of using it later in another routine to create string object arrays. However, the local reference is invalid by the time it is next used. Making the string class reference a global reference eliminates the problem. Change-Id: I8a04642e0ed3060f2fff2cb63996559f004aacff
Diffstat (limited to 'core/jni/android_util_AssetManager.cpp')
-rw-r--r--core/jni/android_util_AssetManager.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp
index 1bce332..fdb7fda 100644
--- a/core/jni/android_util_AssetManager.cpp
+++ b/core/jni/android_util_AssetManager.cpp
@@ -1806,7 +1806,9 @@ int register_android_content_AssetManager(JNIEnv* env)
= env->GetFieldID(assetManager, "mObject", "I");
LOG_FATAL_IF(gAssetManagerOffsets.mObject == NULL, "Unable to find AssetManager.mObject");
- g_stringClass = env->FindClass("java/lang/String");
+ jclass stringClass = env->FindClass("java/lang/String");
+ LOG_FATAL_IF(stringClass == NULL, "Unable to find class java/lang/String");
+ g_stringClass = (jclass)env->NewGlobalRef(stringClass);
return AndroidRuntime::registerNativeMethods(env,
"android/content/res/AssetManager", gAssetManagerMethods, NELEM(gAssetManagerMethods));