From 823690e6ffc0714b9e64c0628b501515e54cafc8 Mon Sep 17 00:00:00 2001 From: Jakob Gillich Date: Tue, 16 Sep 2025 12:39:10 +0200 Subject: [PATCH] Fix onSprite call on bad references (#3805) --- .../src/cpp/native_map_view.cpp | 52 +++++++++++-------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/platform/android/MapLibreAndroid/src/cpp/native_map_view.cpp b/platform/android/MapLibreAndroid/src/cpp/native_map_view.cpp index e7a48ac3c..2b50c349c 100644 --- a/platform/android/MapLibreAndroid/src/cpp/native_map_view.cpp +++ b/platform/android/MapLibreAndroid/src/cpp/native_map_view.cpp @@ -1594,13 +1594,16 @@ void NativeMapView::onSpriteLoaded(const std::optional& sprite) { static auto& javaClass = jni::Class::Singleton(*_env); static auto onSpriteLoaded = javaClass.GetMethod(*_env, "onSpriteLoaded"); auto weakReference = javaPeer.get(*_env); - if (weakReference && sprite) { - weakReference.Call(*_env, - onSpriteLoaded, - jni::Make(*_env, sprite->id), - jni::Make(*_env, sprite->spriteURL)); - } else { - weakReference.Call(*_env, onSpriteLoaded, jni::Make(*_env, ""), jni::Make(*_env, "")); + if (weakReference) { + if (sprite) { + weakReference.Call(*_env, + onSpriteLoaded, + jni::Make(*_env, sprite->id), + jni::Make(*_env, sprite->spriteURL)); + } else { + weakReference.Call( + *_env, onSpriteLoaded, jni::Make(*_env, ""), jni::Make(*_env, "")); + } } } @@ -1611,13 +1614,16 @@ void NativeMapView::onSpriteError(const std::optional& sprite, st static auto& javaClass = jni::Class::Singleton(*_env); static auto onSpriteError = javaClass.GetMethod(*_env, "onSpriteError"); auto weakReference = javaPeer.get(*_env); - if (weakReference && sprite) { - weakReference.Call(*_env, - onSpriteError, - jni::Make(*_env, sprite->id), - jni::Make(*_env, sprite->spriteURL)); - } else { - weakReference.Call(*_env, onSpriteError, jni::Make(*_env, ""), jni::Make(*_env, "")); + if (weakReference) { + if (sprite) { + weakReference.Call(*_env, + onSpriteError, + jni::Make(*_env, sprite->id), + jni::Make(*_env, sprite->spriteURL)); + } else { + weakReference.Call( + *_env, onSpriteError, jni::Make(*_env, ""), jni::Make(*_env, "")); + } } } @@ -1628,14 +1634,16 @@ void NativeMapView::onSpriteRequested(const std::optional& sprite static auto& javaClass = jni::Class::Singleton(*_env); static auto onSpriteRequested = javaClass.GetMethod(*_env, "onSpriteRequested"); auto weakReference = javaPeer.get(*_env); - if (weakReference && sprite) { - weakReference.Call(*_env, - onSpriteRequested, - jni::Make(*_env, sprite->id), - jni::Make(*_env, sprite->spriteURL)); - } else { - weakReference.Call( - *_env, onSpriteRequested, jni::Make(*_env, ""), jni::Make(*_env, "")); + if (weakReference) { + if (sprite) { + weakReference.Call(*_env, + onSpriteRequested, + jni::Make(*_env, sprite->id), + jni::Make(*_env, sprite->spriteURL)); + } else { + weakReference.Call( + *_env, onSpriteRequested, jni::Make(*_env, ""), jni::Make(*_env, "")); + } } }