You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
src/api-impl-jni/android_app_NativeActivity.c: strdup datadir paths before freeing them
This commit is contained in:
@@ -250,8 +250,6 @@ Java_android_app_NativeActivity_loadNativeCode(JNIEnv* env, jobject clazz, jstri
|
|||||||
jstring externalDataDir, int sdkVersion,
|
jstring externalDataDir, int sdkVersion,
|
||||||
jobject jAssetMgr, jbyteArray savedState)
|
jobject jAssetMgr, jbyteArray savedState)
|
||||||
{
|
{
|
||||||
printf("STUB - loadNativeCode_native\n");
|
|
||||||
|
|
||||||
const char* pathStr = (*env)->GetStringUTFChars(env, path, NULL);
|
const char* pathStr = (*env)->GetStringUTFChars(env, path, NULL);
|
||||||
struct NativeCode* code = NULL;
|
struct NativeCode* code = NULL;
|
||||||
|
|
||||||
@@ -280,7 +278,7 @@ Java_android_app_NativeActivity_loadNativeCode(JNIEnv* env, jobject clazz, jstri
|
|||||||
*/
|
*/
|
||||||
int msgpipe[2];
|
int msgpipe[2];
|
||||||
if (pipe(msgpipe)) {
|
if (pipe(msgpipe)) {
|
||||||
printf("could not create pipe: %s", strerror(errno));
|
fprintf(stderr, "could not create pipe: %s", strerror(errno));
|
||||||
NativeCode_destroy(code);
|
NativeCode_destroy(code);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -312,12 +310,13 @@ Java_android_app_NativeActivity_loadNativeCode(JNIEnv* env, jobject clazz, jstri
|
|||||||
code->native_activity.env = env;
|
code->native_activity.env = env;
|
||||||
code->native_activity.clazz = (*env)->NewGlobalRef(env, clazz);
|
code->native_activity.clazz = (*env)->NewGlobalRef(env, clazz);
|
||||||
|
|
||||||
code->native_activity.internalDataPath = (*env)->GetStringUTFChars(env, internalDataDir, NULL);
|
char *tmp;
|
||||||
(*env)->ReleaseStringUTFChars(env, internalDataDir, code->native_activity.internalDataPath);
|
code->native_activity.internalDataPath = strdup(tmp = (*env)->GetStringUTFChars(env, internalDataDir, NULL));
|
||||||
|
(*env)->ReleaseStringUTFChars(env, internalDataDir, tmp);
|
||||||
|
|
||||||
if (externalDataDir != NULL) {
|
if (externalDataDir != NULL) {
|
||||||
code->native_activity.externalDataPath = (*env)->GetStringUTFChars(env, externalDataDir, NULL);
|
code->native_activity.externalDataPath = strdup(tmp = (*env)->GetStringUTFChars(env, externalDataDir, NULL));
|
||||||
(*env)->ReleaseStringUTFChars(env, externalDataDir, code->native_activity.externalDataPath);
|
(*env)->ReleaseStringUTFChars(env, externalDataDir, tmp);
|
||||||
} else {
|
} else {
|
||||||
code->native_activity.externalDataPath = NULL; // TODO: or ""?
|
code->native_activity.externalDataPath = NULL; // TODO: or ""?
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user