[cairo-bugs] [Bug 30099] New: misleading warning when && operator paired with a constant - is it operator precedence?

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Sep 9 03:17:08 PDT 2010


https://bugs.freedesktop.org/show_bug.cgi?id=30099

           Summary: misleading warning when && operator paired with a
                    constant - is it operator precedence?
           Product: cairo
           Version: 1.10.1
          Platform: ARM
        OS/Version: Linux (All)
            Status: NEW
          Severity: normal
          Priority: medium
         Component: general
        AssignedTo: cworth at cworth.org
        ReportedBy: alexander.stohr at gmx.de
         QAContact: cairo-bugs at cairographics.org


gcc --version
gcc (GCC) 4.3.1
Copyright (C) 2008 Free Software Foundation, Inc.

found in package cairo-1.9.14 and file test/cairo-test.c with critical line
1597:
  if (ctx->thread == 0 && ! RUNNING_ON_VALGRIND)

build outputs:
"warning: logical '&&' with non-zero constant will always evaluate as true"

from the used setup the VALGRIND macro is assumed to have a true value.
(a code checker would probably suggest using round braces around the "==" part.
the used default project tuning of gcc does not raise a warning on operator
precedence.)

whats the problem?
a) if you use && with a constant and something else
then your result will always either be false (const=false) or something else
(const=true).
there is no case for the compiler seeing this as fixed to true.
b) maybe its unintended operator precedence that makes the case behave
strangely

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the cairo-bugs mailing list