Skip to content

Commit fd73975

Browse files
authored
fix (BugSplatManager): unregister logMessageReceived on destruction (#94)
Application.logMessageReceived is a static callback handler, which isn't reset when changing scenes or when exiting play mode if domain reloads are not enabled. When destroying the class without unregistering, e.g. due to scene change or existing play mode, the callback will then try to start a coroutine on the destroyed object.
1 parent a256817 commit fd73975

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

Runtime/Manager/BugSplatManager.cs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,23 @@ private void Awake()
3333

3434
if (registerLogMessageReceived)
3535
{
36-
Application.logMessageReceived += (logMessage, stackTrace, type) => StartCoroutine(bugsplat.LogMessageReceived(logMessage, stackTrace, type));
36+
Application.logMessageReceived += LogMessageReceivedHandler;
3737
}
38-
38+
3939
if (dontDestroyManagerOnSceneLoad)
4040
{
41-
DontDestroyOnLoad(this);
41+
DontDestroyOnLoad(this);
4242
}
4343
}
44+
45+
private void OnDestroy()
46+
{
47+
Application.logMessageReceived -= LogMessageReceivedHandler;
48+
}
49+
50+
void LogMessageReceivedHandler(string logMessage, string stackTrace, LogType type)
51+
{
52+
StartCoroutine(bugsplatRef.BugSplat.LogMessageReceived(logMessage, stackTrace, type));
53+
}
4454
}
4555
}

0 commit comments

Comments
 (0)