aboutsummaryrefslogtreecommitdiff
path: root/src/engine/condition.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-07-31 17:06:35 -0600
committerSean Hall <r.sean.hall@gmail.com>2020-08-09 10:33:49 -0600
commitd21eed76c48960707561c45c492c10a6a23c052e (patch)
treeebab09d099a699a24801fcfb4d7152cf82cc4a06 /src/engine/condition.cpp
parentad80d6dc10f9bd6cb6a084857a8fb546cc55e756 (diff)
downloadwix-d21eed76c48960707561c45c492c10a6a23c052e.tar.gz
wix-d21eed76c48960707561c45c492c10a6a23c052e.tar.bz2
wix-d21eed76c48960707561c45c492c10a6a23c052e.zip
WIXFEAT:4763 Change "string" variable type to literal and add "formatted".
Diffstat (limited to 'src/engine/condition.cpp')
-rw-r--r--src/engine/condition.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/engine/condition.cpp b/src/engine/condition.cpp
index 28391d2d..cd346680 100644
--- a/src/engine/condition.cpp
+++ b/src/engine/condition.cpp
@@ -439,6 +439,13 @@ static HRESULT ParseValue(
439 { 439 {
440 ExitOnRootFailure(hr, "Failed to find variable."); 440 ExitOnRootFailure(hr, "Failed to find variable.");
441 } 441 }
442
443 if (BURN_VARIANT_TYPE_FORMATTED == pValue->Type)
444 {
445 // TODO: actually format the value?
446 hr = BVariantChangeType(pValue, BURN_VARIANT_TYPE_STRING);
447 ExitOnRootFailure(hr, "Failed to change variable '%ls' type for condition '%ls'", pContext->NextSymbol.Value.sczValue, pContext->wzCondition);
448 }
442 break; 449 break;
443 450
444 case BURN_SYMBOL_TYPE_NUMBER: __fallthrough; 451 case BURN_SYMBOL_TYPE_NUMBER: __fallthrough;
@@ -642,7 +649,7 @@ static HRESULT NextSymbol(
642 ++n; // terminating '"' 649 ++n; // terminating '"'
643 650
644 pContext->NextSymbol.Type = BURN_SYMBOL_TYPE_LITERAL; 651 pContext->NextSymbol.Type = BURN_SYMBOL_TYPE_LITERAL;
645 hr = BVariantSetString(&pContext->NextSymbol.Value, &pContext->wzRead[1], n - 2); 652 hr = BVariantSetString(&pContext->NextSymbol.Value, &pContext->wzRead[1], n - 2, FALSE);
646 ExitOnFailure(hr, "Failed to set symbol value."); 653 ExitOnFailure(hr, "Failed to set symbol value.");
647 break; 654 break;
648 default: 655 default:
@@ -746,7 +753,7 @@ static HRESULT NextSymbol(
746 { 753 {
747 // identifier 754 // identifier
748 pContext->NextSymbol.Type = BURN_SYMBOL_TYPE_IDENTIFIER; 755 pContext->NextSymbol.Type = BURN_SYMBOL_TYPE_IDENTIFIER;
749 hr = BVariantSetString(&pContext->NextSymbol.Value, pContext->wzRead, n); 756 hr = BVariantSetString(&pContext->NextSymbol.Value, pContext->wzRead, n, FALSE);
750 ExitOnFailure(hr, "Failed to set symbol value."); 757 ExitOnFailure(hr, "Failed to set symbol value.");
751 } 758 }
752 } 759 }