Module: wine Branch: master Commit: 7837ae20cdeabab661da7bb5dae24f5ffefe17ee URL: https://source.winehq.org/git/wine.git/?a=commit;h=7837ae20cdeabab661da7bb5d...
Author: Piotr Caban piotr@codeweavers.com Date: Fri Jul 13 13:12:51 2018 +0200
msi: Fix condition evaluation when comparing literal and integer.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45445 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 | 2 +- dlls/msi/tests/package.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/dlls/msi/cond.y b/dlls/msi/cond.y index ce06199..a8c9734 100644 --- a/dlls/msi/cond.y +++ b/dlls/msi/cond.y @@ -218,7 +218,7 @@ boolean_factor: } else if ($1.type == VALUE_LITERAL || $3.type == VALUE_LITERAL) { - $$ = FALSE; + $$ = ($2 == COND_NE || $2 == COND_INE ); } else if ($1.type == VALUE_SYMBOL) /* symbol operator integer */ { diff --git a/dlls/msi/tests/package.c b/dlls/msi/tests/package.c index ace9b35..d6d90ce 100644 --- a/dlls/msi/tests/package.c +++ b/dlls/msi/tests/package.c @@ -2097,6 +2097,10 @@ static void test_condition(void) ok( r == MSICONDITION_FALSE, "wrong return val (%d)\n", r); r = MsiEvaluateConditionA(hpkg, "&nofeature="""); ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r); + r = MsiEvaluateConditionA(hpkg, "&nofeature<>3"); + ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r); + r = MsiEvaluateConditionA(hpkg, """<>3"); + ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r); r = MsiEvaluateConditionA(hpkg, "!nofeature="""); ok( r == MSICONDITION_TRUE, "wrong return val (%d)\n", r); MsiEvaluateConditionA(hpkg, "$nocomponent=""");