diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs index d5bcf58c..500cc08e 100644 --- a/SabreTools.Library/DatFiles/DatFile.cs +++ b/SabreTools.Library/DatFiles/DatFile.cs @@ -280,7 +280,7 @@ namespace SabreTools.Library.DatFiles // First do the initial sort of all of the roms inplace List oldkeys = Keys; - Parallel.For(0, oldkeys.Count, Globals.ParallelOptions, k => + for (int k = 0; k < oldkeys.Count; k++) { string key = oldkeys[k]; @@ -291,6 +291,8 @@ namespace SabreTools.Library.DatFiles for (int i = 0; i < items.Count; i++) { DatItem item = items[i]; + if (item == null) + continue; // We want to get the key most appropriate for the given sorting type string newkey = item.GetKey(bucketBy, lower, norename); @@ -303,7 +305,11 @@ namespace SabreTools.Library.DatFiles i--; // This make sure that the pointer stays on the correct since one was removed } } - }); + + // If the key is now empty, remove it + if (this[key].Count == 0) + Remove(key); + } } // If the merge type isn't the same, we want to merge the dictionary accordingly diff --git a/SabreTools.Library/DatFiles/Filter.cs b/SabreTools.Library/DatFiles/Filter.cs index 1fad8c2f..228793db 100644 --- a/SabreTools.Library/DatFiles/Filter.cs +++ b/SabreTools.Library/DatFiles/Filter.cs @@ -784,6 +784,9 @@ namespace SabreTools.Library.DatFiles foreach (string key in datFile.Keys) { List items = datFile[key]; + if (items == null) + continue; + List newitems = items.Where(i => i.ItemType != ItemType.Blank).ToList(); datFile.Remove(key); @@ -890,6 +893,9 @@ namespace SabreTools.Library.DatFiles foreach (string key in outDat.Keys) { List items = outDat[key]; + if (items == null) + continue; + List newitems = items.Where(i => i.ItemType != ItemType.Blank).ToList(); outDat.Remove(key);