From 2cae81fe9d9457c395996e6f27db0d81e250e4f2 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Thu, 12 Mar 2020 21:25:18 -0400 Subject: Avoid infinite loops when resolving variables. --- src/WixToolset.Core/VariableResolver.cs | 2 +- src/test/WixToolsetTest.CoreIntegration/VariableResolverFixture.cs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/WixToolset.Core/VariableResolver.cs b/src/WixToolset.Core/VariableResolver.cs index 0a7916a3..4a65bec2 100644 --- a/src/WixToolset.Core/VariableResolver.cs +++ b/src/WixToolset.Core/VariableResolver.cs @@ -94,7 +94,7 @@ namespace WixToolset.Core result.IsDefault = true; result.Value = value; - while (!result.DelayedResolve && matches.Count > 0) + while (!this.Messaging.EncounteredError && !result.DelayedResolve && matches.Count > 0) { var sb = new StringBuilder(value); diff --git a/src/test/WixToolsetTest.CoreIntegration/VariableResolverFixture.cs b/src/test/WixToolsetTest.CoreIntegration/VariableResolverFixture.cs index b53842f7..eaeb4724 100644 --- a/src/test/WixToolsetTest.CoreIntegration/VariableResolverFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/VariableResolverFixture.cs @@ -32,6 +32,7 @@ namespace WixToolsetTest.CoreIntegration Assert.Equal("Welcome to Localized Product Name", variableResolver.ResolveVariables(null, "Welcome to !(loc.ProductName)", false).Value); Assert.Equal("Welcome to Localized Product Name Enterprise Edition", variableResolver.ResolveVariables(null, "Welcome to !(loc.ProductNameEdition)", false).Value); Assert.Equal("Welcome to Localized Product Name Enterprise Edition v1.2.3", variableResolver.ResolveVariables(null, "Welcome to !(loc.ProductNameEditionVersion)", false).Value); + Assert.Throws(() => variableResolver.ResolveVariables(null, "Welcome to !(loc.UnknownLocalizationVariable)", false)); } } } -- cgit v1.2.3-55-g6feb