From 89b4b1fab95b4e5eb3d3830c71de9a1aa6f09cdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20B=C3=A1r=C3=A1ny?= Date: Wed, 29 Apr 2026 11:24:05 +0200 Subject: [PATCH] fix: guard against null in StreetView panorama change listeners The OnStreetViewPanoramaChangeListener and OnStreetViewPanoramaCameraChangeListener Java interfaces do not annotate their parameters as @NonNull. The GMS dynamite module (policy_maps_core_dynamite) can deliver null to these listeners on certain devices and Play Services versions. The Kotlin compiler inserts an implicit null-check intrinsic at lambda entry which throws a NullPointerException before the assignment is reached, crashing the app. Fixes the crash by guarding both assignments with a null-safe let block. --- .../android/compose/streetview/StreetViewPanoramaUpdater.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/maps-compose/src/main/java/com/google/maps/android/compose/streetview/StreetViewPanoramaUpdater.kt b/maps-compose/src/main/java/com/google/maps/android/compose/streetview/StreetViewPanoramaUpdater.kt index f9b2caf4..f65044ca 100644 --- a/maps-compose/src/main/java/com/google/maps/android/compose/streetview/StreetViewPanoramaUpdater.kt +++ b/maps-compose/src/main/java/com/google/maps/android/compose/streetview/StreetViewPanoramaUpdater.kt @@ -39,11 +39,13 @@ internal class StreetViewPanoramaPropertiesNode( panorama.setOnStreetViewPanoramaLongClickListener { eventListeners.onLongClick(it) } + // Both Java listener interfaces lack @NonNull, so GMS can deliver null. Guard the + // assignments to prevent the Kotlin compiler's implicit null-check from crashing. panorama.setOnStreetViewPanoramaCameraChangeListener { - cameraPositionState.rawPanoramaCamera = it + it?.let { cameraPositionState.rawPanoramaCamera = it } } panorama.setOnStreetViewPanoramaChangeListener { - cameraPositionState.rawLocation = it + it?.let { cameraPositionState.rawLocation = it } } }