I think i might actually see the problem. Let me test it.

In  cond.tab.c the regexes are all wrong for matching the comparison tests.


{ {'~','<','=',0}, COND_IGE },

This should be parsing as

{ {'~','>','=',0}, COND_IGE },



and
       { {'~','<',0},     COND_IGT },

we're matching a less than sign, so if it is matching the "<" it runs COND_IGT it should be

       { {'~','>',0},     COND_IGT },

From: "EA Durbin" <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED], [EMAIL PROTECTED]
CC: wine-devel@winehq.org
Subject: Re: FW: RE: My 1.0 wish list
Date: Sun, 04 Jun 2006 11:59:25 -0500


Nice Catch!!!

But unfortunately no, it doesn't fix the problem, the test SELECT * FROM TABLE WHERE testcondition >= testinteger is still returning the wrong results.

are we using the case COND_ILE when we compare for greater than or equal to? Or just when less than or equal to?

or does SELECT * FROM TABLE WHERE >= or > only call IGE or IGT?



From: Hans Leidekker <[EMAIL PROTECTED]>
To: "EA Durbin" <[EMAIL PROTECTED]>
CC: wine-devel@winehq.org
Subject: Re: FW: RE: My 1.0 wish list
Date: Sun, 4 Jun 2006 11:29:49 +0200

On Sunday 04 June 2006 11:01, EA Durbin wrote:

> It shouldnt matter whether its >= or >, they both return the wrong results
> in the actual msi installer and the right results in db.c.

Does this patch help?

 -Hans

diff --git a/dlls/msi/cond.y b/dlls/msi/cond.y
index b32c417..47f858a 100644
--- a/dlls/msi/cond.y
+++ b/dlls/msi/cond.y
@@ -463,7 +463,7 @@ static INT compare_int( INT a, INT opera
         return a >= b;
     case COND_LE:
     case COND_ILE:
-        return a >= b;
+        return a <= b;
     case COND_SS:
     case COND_ISS:
         return ( a & b ) ? 1 : 0;








Reply via email to