Fix score being cloned in async method causing random crashes

Closes https://github.com/ppy/osu/issues/24445.
This commit is contained in:
Dean Herbert 2023-08-15 16:08:11 +09:00
parent 526a145b93
commit e8bde6504a
1 changed files with 5 additions and 2 deletions

View File

@ -810,10 +810,13 @@ private Task<ScoreInfo> prepareAndImportScoreAsync(bool forceImport = false)
if (!canShowResults && !forceImport)
return Task.FromResult<ScoreInfo>(null);
// Clone score before beginning any async processing.
// - Must be run synchronously as the score may potentially be mutated in the background.
// - Must be cloned for the same reason.
Score scoreCopy = Score.DeepClone();
return prepareScoreForDisplayTask = Task.Run(async () =>
{
var scoreCopy = Score.DeepClone();
try
{
await PrepareScoreForResultsAsync(scoreCopy).ConfigureAwait(false);