Module: wine Branch: master Commit: b141a145c49f1ad6cb6eef1781e08e8aaaa393ab URL: http://source.winehq.org/git/wine.git/?a=commit;h=b141a145c49f1ad6cb6eef1781...
Author: Piotr Caban piotr@codeweavers.com Date: Fri Oct 20 22:18:25 2017 +0200
msi: Improve feature action value evaluation in conditions.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Hans Leidekker hans@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msi/cond.y | 9 ++++++--- dlls/msi/tests/package.c | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/msi/cond.y b/dlls/msi/cond.y index fa55825..079bbd9 100644 --- a/dlls/msi/cond.y +++ b/dlls/msi/cond.y @@ -318,11 +318,14 @@ value_i: | COND_AMPER identifier { COND_input* cond = (COND_input*) info; - INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN; + INSTALLSTATE install, action;
- MSI_GetFeatureStateW(cond->package, $2, &install, &action ); - if (action == INSTALLSTATE_UNKNOWN) + if (MSI_GetFeatureStateW(cond->package, $2, &install, &action ) != ERROR_SUCCESS) + { + FIXME("condition may be evaluated incorrectly\n"); + /* we should return empty string in this case */ $$ = MSICONDITION_FALSE; + } else $$ = action;
diff --git a/dlls/msi/tests/package.c b/dlls/msi/tests/package.c index 1f04cef..0dafd7c 100644 --- a/dlls/msi/tests/package.c +++ b/dlls/msi/tests/package.c @@ -2069,6 +2069,8 @@ static void test_condition(void) /* feature doesn't exist */ r = MsiEvaluateConditionA(hpkg, "&nofeature"); ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r); + r = MsiEvaluateConditionA(hpkg, "&nofeature="""); + todo_wine ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r);
MsiSetPropertyA(hpkg, "A", "2"); MsiSetPropertyA(hpkg, "X", "50");