[ros-dev] Replacing unsafe TRUE comparisons (Following Re: bool => BOOL)
Love Nystrom
love.nystrom at gmail.com
Fri Nov 14 14:32:12 UTC 2014
On 2014-11-14 00.41, Alex Ionescu wrote:
> I would much rather see if (f != FALSE) instead of if ( f ).
Well, it's certainly a valid option, and C++ compilers seem to generate
the same "CMP boolRm, 0" in both cases (though the latter could actually
generate the potentially faster and better "OR boolRm, boolRm" instead).
I expect some people will use the former.
Personally I much prefer the latter.
Best Regards
// Love
>
> On Wed, Nov 12, 2014 at 10:03 PM, Love Nystrom <love.nystrom at gmail.com
> <mailto:love.nystrom at gmail.com>> wrote:
>
> Thanks..
> Well, someone had to do it, and I had a little time to spare. ;-)
>
> I've attached 15 differentiated patches to this post, to ease review.
> Please use these smaller patches *only for review*.
>
> I have not added them to the bug tracker, because I strongly urge
> that the "big" patch be applied system wide in this case.
>
> Best Regards
> // Love
>
>
> On 2014-11-12 19.42, David Quintana (gigaherz) wrote:
>> Nice work though.
>>
>> On 12 November 2014 13:41, David Quintana (gigaherz)
>> <gigaherz at gmail.com <mailto:gigaherz at gmail.com>> wrote:
>>
>> It's a common practice to include giant code dumps as
>> attachments instead of inlining them in the text of the mail.
>> It may also be a good idea to provide multiple patches based
>> on component, so that different people can take a look at the
>> patches relating to their areas of expertise.
>> If providing one patch per folder is too much work, then at
>> least based on the top-level one. applications.patch,
>> dll.patch, ntoskrnl.patch, etc. would be much easier to review.
>>
>> On 12 November 2014 10:48, Love Nystrom
>> <love.nystrom at gmail.com <mailto:love.nystrom at gmail.com>> wrote:
>>
>> 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
>>
> [abbrev]
>
>
> _______________________________________________
> Ros-dev mailing list
> Ros-dev at reactos.org <mailto:Ros-dev at reactos.org>
> http://www.reactos.org/mailman/listinfo/ros-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.reactos.org/pipermail/ros-dev/attachments/20141114/ee7ecd34/attachment.html>
More information about the Ros-dev
mailing list