Skip to content

Commit fe940be

Browse files
authored
Fix unsafe threaded access to callback registry
1 parent 19ccaa9 commit fe940be

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

com.rlabrecque.steamworks.net/Runtime/CallbackDispatcher.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,14 @@ internal static void RunFrame(bool isGameServer) {
181181
}
182182
Marshal.FreeHGlobal(pTmpCallResult);
183183
} else {
184-
List<Callback> callbacks;
185-
if (callbacksRegistry.TryGetValue(callbackMsg.m_iCallback, out callbacks)) {
186-
List<Callback> callbacksCopy;
187-
lock (m_sync) {
184+
List<Callback> callbacksCopy = null;
185+
lock (m_sync) {
186+
List<Callback> callbacks = null;
187+
if (callbacksRegistry.TryGetValue(callbackMsg.m_iCallback, out callbacks)) {
188188
callbacksCopy = new List<Callback>(callbacks);
189189
}
190+
}
191+
if (callbacksCopy != null) {
190192
foreach (var callback in callbacksCopy) {
191193
callback.OnRunCallback(callbackMsg.m_pubParam);
192194
}

0 commit comments

Comments
 (0)