ChangeSet ID: 21258 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@winehq.org 2005/11/14 06:29:10
Modified files: dlls/msi/tests : package.c dlls/msi : cond.y
Log message: Mike McCormack mike@codeweavers.com Empty strings are not equal to any number, so all comparisons against them fail except for tests for non-equalness.
Patch: http://cvs.winehq.org/patch.py?id=21258
Old revision New revision Changes Path 1.11 1.12 +20 -0 wine/dlls/msi/tests/package.c 1.26 1.27 +8 -2 wine/dlls/msi/cond.y
Index: wine/dlls/msi/tests/package.c diff -u -p wine/dlls/msi/tests/package.c:1.11 wine/dlls/msi/tests/package.c:1.12 --- wine/dlls/msi/tests/package.c:1.11 14 Nov 2005 12:29:10 -0000 +++ wine/dlls/msi/tests/package.c 14 Nov 2005 12:29:10 -0000 @@ -599,6 +599,24 @@ void test_condition(void) r = MsiEvaluateCondition(hpkg, "bandalmael=0"); ok( r == MSICONDITION_FALSE, "wrong return val\n");
+ r = MsiEvaluateCondition(hpkg, "bandalmael<>0"); + ok( r == MSICONDITION_TRUE, "wrong return val\n"); + + r = MsiEvaluateCondition(hpkg, "bandalmael<0"); + ok( r == MSICONDITION_FALSE, "wrong return val\n"); + + r = MsiEvaluateCondition(hpkg, "bandalmael>0"); + ok( r == MSICONDITION_FALSE, "wrong return val\n"); + + r = MsiEvaluateCondition(hpkg, "bandalmael>=0"); + ok( r == MSICONDITION_FALSE, "wrong return val\n"); + + r = MsiEvaluateCondition(hpkg, "bandalmael<=0"); + ok( r == MSICONDITION_FALSE, "wrong return val\n"); + + r = MsiEvaluateCondition(hpkg, "bandalmael~<>0"); + ok( r == MSICONDITION_TRUE, "wrong return val\n"); + MsiSetProperty(hpkg, "bandalmael", "0" ); r = MsiEvaluateCondition(hpkg, "bandalmael=0"); ok( r == MSICONDITION_TRUE, "wrong return val\n"); @@ -646,6 +664,8 @@ void test_condition(void) MsiSetProperty(hpkg, "bandalmael", "0.0" ); r = MsiEvaluateCondition(hpkg, "bandalmael=0"); ok( r == MSICONDITION_FALSE, "wrong return val\n"); + r = MsiEvaluateCondition(hpkg, "bandalmael<>0"); + ok( r == MSICONDITION_TRUE, "wrong return val\n");
MsiCloseHandle( hpkg ); } Index: wine/dlls/msi/cond.y diff -u -p wine/dlls/msi/cond.y:1.26 wine/dlls/msi/cond.y:1.27 --- wine/dlls/msi/cond.y:1.26 14 Nov 2005 12:29:10 -0000 +++ wine/dlls/msi/cond.y 14 Nov 2005 12:29:10 -0000 @@ -194,12 +194,18 @@ boolean_factor: | symbol_s operator value_i { int num; - $$ = num_from_prop( $1, &num ) && compare_int( num, $2, $3 ); + if (num_from_prop( $1, &num )) + $$ = compare_int( num, $2, $3 ); + else + $$ = ($2 == COND_NE || $2 == COND_INE ); } | value_i operator symbol_s { int num; - $$ = num_from_prop( $3, &num ) && compare_int( $1, $2, num ); + if (num_from_prop( $3, &num )) + $$ = compare_int( $1, $2, num ); + else + $$ = ($2 == COND_NE || $2 == COND_INE ); } | symbol_s operator symbol_s {