From 5d905847342871729bf37708f7f34f2a73296566 Mon Sep 17 00:00:00 2001 From: andrekir Date: Mon, 3 Apr 2023 18:12:24 -0300 Subject: [PATCH] fix: add synchronized() to avoid concurrent modifications between saveSettings() and discardNodeDB() --- app/src/main/java/com/geeksville/mesh/service/MeshService.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt index ea8fe8e13..bc9409d16 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -307,9 +307,8 @@ class MeshService : Service(), Logging { private fun getPrefs() = getSharedPreferences("service-prefs", Context.MODE_PRIVATE) /// Save information about our mesh to disk, so we will have it when we next start the service (even before we hear from our device) - private fun saveSettings() { + private fun saveSettings() = synchronized(nodeDBbyNodeNum) { myNodeInfo?.let { myInfo -> - val nodeDBbyNodeNum = nodeDBbyNodeNum.toMap() val settings = MeshServiceSettingsData( myInfo = myInfo, nodeDB = nodeDBbyNodeNum.values.toTypedArray(), @@ -356,7 +355,7 @@ class MeshService : Service(), Logging { /** * discard entire node db & message state - used when downloading a new db from the device */ - private fun discardNodeDB() { + private fun discardNodeDB() = synchronized(nodeDBbyNodeNum) { debug("Discarding NodeDB") myNodeInfo = null nodeDBbyNodeNum.clear()