From 482b62c0c3fd38175eee20d3d059a5def3e1d9ee Mon Sep 17 00:00:00 2001
From: Him188 <Him188@mamoe.net>
Date: Wed, 28 Jul 2021 13:29:33 +0800
Subject: [PATCH] Fix `LateinitMutableProperty`: ensure visibility

---
 .../src/commonMain/kotlin/LateinitMutableProperty.kt       | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/mirai-core-utils/src/commonMain/kotlin/LateinitMutableProperty.kt b/mirai-core-utils/src/commonMain/kotlin/LateinitMutableProperty.kt
index 3013018ba..e3a7bc0bc 100644
--- a/mirai-core-utils/src/commonMain/kotlin/LateinitMutableProperty.kt
+++ b/mirai-core-utils/src/commonMain/kotlin/LateinitMutableProperty.kt
@@ -36,9 +36,12 @@ private class LateinitMutableProperty<T>(
                 val initializer = initializer
                 if (initializer != null && this.value.value === UNINITIALIZED) {
                     val value = initializer()
-                    this.value.compareAndSet(UNINITIALIZED, value) // setValue prevails
                     this.initializer = null
-                    value
+                    this.value.compareAndSet(UNINITIALIZED, value) // setValue prevails
+                    this.value.value.let {
+                        assert(it !== UNINITIALIZED)
+                        return it as T
+                    }
                 } else this.value.value as T
             }
             else -> v as T