@Eric: Do a quick google search for "TROOLEAN", and you'll know why your assumption that BOOL only has two possible values is wrong.
On 16 November 2014 11:19, Eric Kohl <eric.k...@t-online.de> wrote: > > Hello Love, > > I think you are trying to fix a bug at the wrong end. The boolean types > BOOL and BOOLEAN only have, by definition, two valid values: TRUE (aka > 1) and FALSE (aka 0). Your 'other' trues (aka 2 to 2^32-1) are illegal > values which must NEVER be assigned to a boolean variable. Otherwise you > accept to break the checks for TRUE. > > Developers MUST be VERY STRICT when assigning values to a boolean > variable. They HAVE to make sure that the assigned values are either > TRUE or FALSE. IMO other programmers have the right to rely on the fact > that a function, which returns a boolean value, only returns the values > TRUE or FALSE and NEVER returns any other value. Code like "if > (ReadFile(...) == TRUE)" is absolutely OK and MUST work as the > programmer expects! > > Unfortunately, several month ago, some patches were applied to the Wine > code that replaced expressions like "(a < 7) ? TRUE : FALSE" by "(a < > 7)". These patches could be the origin of some bugs and should be > reverted from the Wine codebase. > > > Regards, > Eric > > > Am 12.11.2014 10:48, schrieb Love Nystrom: > > Grep'ing for [ \t]*==[ \t]*TRUE and [ \t]*!=[ \t]*TRUE revealed some 400 > > matches.. > > That's *400 potential malfunctions begging to happen*, as previously > > concluded. > > > > If you *must*, for some obscure reason, code an explicit truth-value > > comparison, > > for God's sake make it (boolVal != FALSE) or (boolVal == FALSE), which > > is safe, > > because a BOOL has 2^32-2 TRUE values !!! > > > > However, the more efficient "if ( boolVal )" and "if ( !boolVal )" ought > > to be *mandatory*. > > > > I do hope nobody will challenge that "if ( boolVal )" equals "if ( > > boolVal != FALSE )", > > and does *not* equal "if ( boolVal == TRUE )", when boolVal is BOOL or > > BOOLEAN... > > > > I've patched all those potential errors against the current trunk. > > In most cases a simple removal of "== TRUE" was sufficient, however in > > asserts I replaced it with "!= FALSE", since that may be clearer when > > triggered. > > The only places I let it pass was in pure debug strings and comments. > > > > As this is a *fairly extensive patch*, I would very much appreciate if a > > *prioritized regression test* could be run by you guys who do such > things, > > since this may actually fix some "mysterious" malfunctions, or introduce > > bugs that did not trigger in my alpha test. > > > > My own alpha test was limited to building and installing it on VMware > > Player 6, > > and concluding that "it appears to run without obvious malfunctions". > > *Actually, when compared to a pre-patch build, one "mysterious" crash > > disappeared!* > > > > The patch has been submitted as bug CORE-8799, and is also included > > inline in this post. > > > > Best Regards > > // Love > > _______________________________________________ > Ros-dev mailing list > Ros-dev@reactos.org > http://www.reactos.org/mailman/listinfo/ros-dev >
_______________________________________________ Ros-dev mailing list Ros-dev@reactos.org http://www.reactos.org/mailman/listinfo/ros-dev