From e36c6db008d5caadb002d218976f2f1de7be75cd Mon Sep 17 00:00:00 2001 From: Dan Balasescu Date: Wed, 23 Apr 2025 18:17:27 +0900 Subject: [PATCH] Fix stack overflow due to bindable equality --- .../Screens/OnlinePlay/OnlinePlaySongSelect.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/osu.Game/Screens/OnlinePlay/OnlinePlaySongSelect.cs b/osu.Game/Screens/OnlinePlay/OnlinePlaySongSelect.cs index cdd2d141aa..bb6d75fa3b 100644 --- a/osu.Game/Screens/OnlinePlay/OnlinePlaySongSelect.cs +++ b/osu.Game/Screens/OnlinePlay/OnlinePlaySongSelect.cs @@ -167,12 +167,21 @@ namespace osu.Game.Screens.OnlinePlay freeModsFooterButton.Enabled.Value = true; } + /// + /// Removes invalid mods from and , + /// and updates mod selection overlays to display the new mods valid for selection. + /// private void updateValidMods() { - // Remove invalid mods and display the newly available mod panels. - Mods.Value = Mods.Value.Where(isValidRequiredMod).ToArray(); + Mod[] validMods = Mods.Value.Where(isValidRequiredMod).ToArray(); + if (!validMods.SequenceEqual(Mods.Value)) + Mods.Value = validMods; + + Mod[] validFreeMods = FreeMods.Value.Where(isValidAllowedMod).ToArray(); + if (!validFreeMods.SequenceEqual(FreeMods.Value)) + FreeMods.Value = validFreeMods; + ModSelect.IsValidMod = isValidRequiredMod; - FreeMods.Value = FreeMods.Value.Where(isValidAllowedMod).ToArray(); freeModSelect.IsValidMod = isValidAllowedMod; }