Skip to content

Commit f14de77

Browse files
authored
fix: Empty prefab removal (#919)
This fixes a bug where a list was being removed from while iterated over. `networkPrefabIndexToRemove` contains indices of prefabs to remove in ascending order so we need to remove them in reverse order or else the indices all shift and we can an argument exception.
1 parent 1a7c145 commit f14de77

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -496,9 +496,10 @@ private void Initialize(bool server)
496496
}
497497

498498
// Clear out anything that is invalid or not used (for invalid entries we already logged warnings to the user earlier)
499-
foreach (var networkPrefabIndexToRemove in removeEmptyPrefabs)
499+
// Iterate backwards so indices don't shift as we remove
500+
for (int i = removeEmptyPrefabs.Count-1; i >= 0; i--)
500501
{
501-
NetworkConfig.NetworkPrefabs.RemoveAt(networkPrefabIndexToRemove);
502+
NetworkConfig.NetworkPrefabs.RemoveAt(removeEmptyPrefabs[i]);
502503
}
503504
removeEmptyPrefabs.Clear();
504505

0 commit comments

Comments
 (0)