From 0d1851c79901ba6ddbba9bb63f758760fe5be994 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Tue, 5 Jan 2021 15:13:37 -0800 Subject: Fix handling of duplicate directories --- .../Bind/AddRequiredStandardDirectories.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/WixToolset.Core.WindowsInstaller') diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/AddRequiredStandardDirectories.cs b/src/WixToolset.Core.WindowsInstaller/Bind/AddRequiredStandardDirectories.cs index 4597639b..ee3bcc91 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/AddRequiredStandardDirectories.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/AddRequiredStandardDirectories.cs @@ -27,7 +27,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind public void Execute() { var directories = this.Section.Symbols.OfType().ToList(); - var directoriesById = directories.ToDictionary(d => d.Id.Id); + var directoryIds = new SortedSet(directories.Select(d => d.Id.Id)); foreach (var directory in directories) { @@ -42,20 +42,20 @@ namespace WixToolset.Core.WindowsInstaller.Bind } else { - this.EnsureStandardDirectoryAdded(directoriesById, parentDirectoryId, directory.SourceLineNumbers); + this.EnsureStandardDirectoryAdded(directoryIds, parentDirectoryId, directory.SourceLineNumbers); } } - if (!directoriesById.ContainsKey("TARGETDIR") && WindowsInstallerStandard.TryGetStandardDirectory("TARGETDIR", out var targetDir)) + if (!directoryIds.Contains("TARGETDIR") && WindowsInstallerStandard.TryGetStandardDirectory("TARGETDIR", out var targetDir)) { - directoriesById.Add(targetDir.Id.Id, targetDir); + directoryIds.Add(targetDir.Id.Id); this.Section.AddSymbol(targetDir); } } - private void EnsureStandardDirectoryAdded(Dictionary directoriesById, string directoryId, SourceLineNumber sourceLineNumbers) + private void EnsureStandardDirectoryAdded(ISet directoryIds, string directoryId, SourceLineNumber sourceLineNumbers) { - if (!directoriesById.ContainsKey(directoryId) && WindowsInstallerStandard.TryGetStandardDirectory(directoryId, out var standardDirectory)) + if (!directoryIds.Contains(directoryId) && WindowsInstallerStandard.TryGetStandardDirectory(directoryId, out var standardDirectory)) { var parentDirectoryId = this.GetStandardDirectoryParent(directoryId); @@ -65,12 +65,12 @@ namespace WixToolset.Core.WindowsInstaller.Bind ParentDirectoryRef = parentDirectoryId, }; - directoriesById.Add(directory.Id.Id, directory); + directoryIds.Add(directory.Id.Id); this.Section.AddSymbol(directory); if (!String.IsNullOrEmpty(parentDirectoryId)) { - this.EnsureStandardDirectoryAdded(directoriesById, parentDirectoryId, sourceLineNumbers); + this.EnsureStandardDirectoryAdded(directoryIds, parentDirectoryId, sourceLineNumbers); } } } -- cgit v1.2.3-55-g6feb