@joebigelow / wix / commits / 838d10a3

Correctly handle missing/null values with ~<> operator.

(That's case-insensitive non-equal.) Fixes https://github.com/wixtoolset/issues/issues/5372

Bob Arnson committed Mar 7, 2021 at 19:28 UTC 838d10a319d0c35ed71fcd3e14d2a830883dbbbd
2 files changed +4 -1
src/engine/condition.cpp
+1 -1
@@ -896,7 +896,7 @@ static HRESULT CompareOperands(
896 else
897 {
898 // not a combination that can be compared
899 - *pfResult = (BURN_SYMBOL_TYPE_NE == comparison);
899 + *pfResult = (BURN_SYMBOL_TYPE_NE == comparison || BURN_SYMBOL_TYPE_NE_I == comparison);
900 }
901
902 LExit:
src/test/BurnUnitTest/VariableTest.cpp
+3
@@ -258,7 +258,10 @@ namespace Bootstrapper
258 Assert::True(EvaluateConditionHelper(&variables, L"PROP1 = \"VAL1\""));
259 Assert::False(EvaluateConditionHelper(&variables, L"NONE = \"NOT\""));
260 Assert::False(EvaluateConditionHelper(&variables, L"PROP1 <> \"VAL1\""));
261 + Assert::False(EvaluateConditionHelper(&variables, L"PROP1 ~<> \"VAL1\""));
262 + Assert::False(EvaluateConditionHelper(&variables, L"PROP1 ~<> \"Val1\""));
263 Assert::True(EvaluateConditionHelper(&variables, L"NONE <> \"NOT\""));
264 + Assert::True(EvaluateConditionHelper(&variables, L"NONE ~<> \"NOT\""));
265
266 Assert::True(EvaluateConditionHelper(&variables, L"PROP1 ~= \"val1\""));
267 Assert::False(EvaluateConditionHelper(&variables, L"PROP1 = \"val1\""));