disregard that last stupid question, I looked at the Makefile. Like i said I'm not a C hacker, had to edit cond.y and not cond.tab.c.
From: "EA Durbin" ead1234@hotmail.com To: ead1234@hotmail.com, hans@it.vu.nl, mike@codeweavers.com CC: wine-devel@winehq.org Subject: Re: FW: RE: My 1.0 wish list Date: Sun, 04 Jun 2006 12:49:41 -0500
Why when i edit the code to change this, does it revert back when i compile it?
From: "EA Durbin" ead1234@hotmail.com To: ead1234@hotmail.com, hans@it.vu.nl, mike@codeweavers.com CC: wine-devel@winehq.org Subject: Re: FW: RE: My 1.0 wish list Date: Sun, 04 Jun 2006 12:12:18 -0500
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" ead1234@hotmail.com To: hans@it.vu.nl, mike@codeweavers.com 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 hans@it.vu.nl To: "EA Durbin" ead1234@hotmail.com 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;
case COND_SS: case COND_ISS: return ( a & b ) ? 1 : 0;return a <= b;