From ae758cf0ba783014461f61bb8fbca9a652875ee0 Mon Sep 17 00:00:00 2001 From: Jenna Antilla <46546946+jennantilla@users.noreply.github.com> Date: Fri, 3 Nov 2023 13:10:02 -0700 Subject: [PATCH] Add synchronized blocks to model get and set methods --- .../com/onesignal/common/modeling/Model.kt | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/modeling/Model.kt b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/modeling/Model.kt index 20f661249f..fe7cbaac77 100644 --- a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/modeling/Model.kt +++ b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/modeling/Model.kt @@ -436,19 +436,21 @@ open class Model( tag: String = ModelChangeTags.NORMAL, forceChange: Boolean = false, ) { - val oldValue = data[name] + synchronized(data) { + val oldValue = data[name] - if (oldValue == value && !forceChange) { - return - } + if (oldValue == value && !forceChange) { + return + } - if (value != null) { - data[name] = value - } else if (data.containsKey(name)) { - data.remove(name) - } + if (value != null) { + data[name] = value + } else if (data.containsKey(name)) { + data.remove(name) + } - notifyChanged(name, name, tag, oldValue, value) + notifyChanged(name, name, tag, oldValue, value) + } } /** @@ -634,12 +636,14 @@ open class Model( name: String, create: (() -> Any?)? = null, ): Any? { - return if (data.containsKey(name) || create == null) { - data[name] - } else { - val defaultValue = create() - data[name] = defaultValue as Any? - defaultValue + synchronized(data) { + return if (data.containsKey(name) || create == null) { + data[name] + } else { + val defaultValue = create() + data[name] = defaultValue as Any? + defaultValue + } } }