From 997b727c17d2fd02151fa672139d5bf3e092ccda Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Mon, 1 Jun 2009 14:20:11 +0000 Subject: [PATCH] Fixed ArgumentNullException in CompileModifiedProjectsOnly when an IBuildable2 implementation returned null as ProjectBuildOptions. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@4190 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../ProjectService/CompileModifiedProjectsOnly.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Main/Base/Project/Src/Services/ProjectService/CompileModifiedProjectsOnly.cs b/src/Main/Base/Project/Src/Services/ProjectService/CompileModifiedProjectsOnly.cs index 9f32dfd36d..c32467890b 100644 --- a/src/Main/Base/Project/Src/Services/ProjectService/CompileModifiedProjectsOnly.cs +++ b/src/Main/Base/Project/Src/Services/ProjectService/CompileModifiedProjectsOnly.cs @@ -214,7 +214,8 @@ namespace ICSharpCode.SharpDevelop.Project } Dictionary> cachedBuildDependencies = new Dictionary>(); - + ICollection cachedBuildDependenciesForNullOptions; + public ICollection GetBuildDependencies(ProjectBuildOptions buildOptions) { List result = new List(); @@ -222,7 +223,10 @@ namespace ICSharpCode.SharpDevelop.Project result.Add(factory.GetWrapper(b)); } lock (cachedBuildDependencies) { - cachedBuildDependencies[buildOptions] = result; + if (buildOptions != null) + cachedBuildDependencies[buildOptions] = result; + else + cachedBuildDependenciesForNullOptions = result; } return result; } @@ -254,7 +258,8 @@ namespace ICSharpCode.SharpDevelop.Project } if (lastCompilationPass != null && Setting == BuildOnExecuteSetting.BuildModifiedAndDependent) { lock (cachedBuildDependencies) { - if (cachedBuildDependencies[buildOptions].OfType().Any(w=>w.WasRecompiledAfter(lastCompilationPass))) { + var dependencies = buildOptions != null ? cachedBuildDependencies[buildOptions] : cachedBuildDependenciesForNullOptions; + if (dependencies.OfType().Any(w=>w.WasRecompiledAfter(lastCompilationPass))) { lastCompilationPass = null; } }