wine/dlls/msi tests/package.c cond.y

Alexandre Julliard julliard at wine.codeweavers.com
Mon Nov 14 06:29:11 CST 2005


ChangeSet ID:	21258
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/11/14 06:29:10

Modified files:
	dlls/msi/tests : package.c 
	dlls/msi       : cond.y 

Log message:
	Mike McCormack <mike at 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
         {



More information about the wine-cvs mailing list