Browse Source

Android: on rare occasion, prevent Android_JNI_GetNativeWindow() from crashing

If Java getNativeSurface() returns null, then ANativeWindow_fromSurface() would crash().
Sylvain Becker 6 years ago
parent
commit
03b0e1dee0
1 changed files with 5 additions and 3 deletions
  1. 5 3
      src/core/android/SDL_android.c

+ 5 - 3
src/core/android/SDL_android.c

@@ -951,13 +951,15 @@ static void LocalReferenceHolder_Cleanup(struct LocalReferenceHolder *refholder)
 
 ANativeWindow* Android_JNI_GetNativeWindow(void)
 {
-    ANativeWindow* anw;
+    ANativeWindow *anw = NULL;
     jobject s;
     JNIEnv *env = Android_JNI_GetEnv();
 
     s = (*env)->CallStaticObjectMethod(env, mActivityClass, midGetNativeSurface);
-    anw = ANativeWindow_fromSurface(env, s);
-    (*env)->DeleteLocalRef(env, s);
+    if (s) {
+        anw = ANativeWindow_fromSurface(env, s);
+        (*env)->DeleteLocalRef(env, s);
+    }
 
     return anw;
 }