Thomas Weidenmueller wrote:
Hartmut Birr wrote:
You are right, but I've still assumed that
the pointer is zero or valid.
The real problem is, that gcc doesn't stop to validate an expression if
the result is determined and if the expression consist of simple
expressions which are combined with OR.
i tried the following test application with various configurations of
gcc 4.0 and 3.4.2, but it appears to work correctly.
#include <stdio.h>
int main(int argc, char* argv[])
{
volatile int *x = NULL;
if(x == NULL || *x == 0)
{
printf("true\n");
}
else
{
printf("false\n");
}
return 0;
}
_______________________________________________
Ros-dev mailing list
Ros-dev(a)reactos.com
http://reactos.com:8080/mailman/listinfo/ros-dev
This means, gcc is intelligent enough to made a difference between
comparing a variable with different values and between calculating
expressions from pointers.
- Hartmut