From 61c9e94e46b24f60b7c6d0314105e96ddbf32ce7 Mon Sep 17 00:00:00 2001 From: liuyunming521520-cell Date: Thu, 10 Sep 2026 23:56:10 +0800 Subject: [PATCH] Ignore stale system location callbacks --- .../com/bitchat/android/geohash/SystemLocationProvider.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/bitchat/android/geohash/SystemLocationProvider.kt b/app/src/main/java/com/bitchat/android/geohash/SystemLocationProvider.kt index 4c63c698..cfb0848e 100644 --- a/app/src/main/java/com/bitchat/android/geohash/SystemLocationProvider.kt +++ b/app/src/main/java/com/bitchat/android/geohash/SystemLocationProvider.kt @@ -376,9 +376,13 @@ internal class SystemLocationProvider(private val context: Context) : LocationPr removeLocationUpdates(callback) - val listener = object : LocationListener { + lateinit var listener: LocationListener + listener = object : LocationListener { override fun onLocationChanged(location: Location) { - if (hasLocationPermission()) callback(location) + val isCurrentListener = synchronized(activeListeners) { + activeListeners[callback] === listener + } + if (isCurrentListener && hasLocationPermission()) callback(location) } override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) = Unit