diff options
| -rwxr-xr-x | cgcc | 2 | ||||
| -rw-r--r-- | evaluate.c | 2 | ||||
| -rw-r--r-- | lib.c | 2 | ||||
| -rw-r--r-- | lib.h | 1 | ||||
| -rw-r--r-- | validation/non-pointer-null.c | 1 |
5 files changed, 6 insertions, 2 deletions
@@ -66,7 +66,7 @@ exit 0; sub check_only_option { my ($arg) = @_; - return 1 if $arg =~ /^-W(no-?)?(default-bitfield-sig|one-bit-signed-bitfield|cast-truncate|bitwise|typesign|context|undefined-preprocessor|ptr-subtraction-blows|cast-to-address-space|decl|transparent-union|address-space|enum-mismatch|do-while|old-initializer)$/; + return 1 if $arg =~ /^-W(no-?)?(default-bitfield-sig|one-bit-signed-bitfield|cast-truncate|bitwise|typesign|context|undefined-preprocessor|ptr-subtraction-blows|cast-to-address-space|decl|transparent-union|address-space|enum-mismatch|do-while|old-initializer|non-pointer-null)$/; return 1 if $arg =~ /^-v(no-?)?(entry|dead)$/; return 0; } @@ -812,7 +812,7 @@ static int is_null_ptr(struct expression *expr) { if (expr->type != EXPR_VALUE || expr->value) return 0; - if (!is_ptr_type(expr->ctype)) + if (Wnon_pointer_null && !is_ptr_type(expr->ctype)) warning(expr->pos, "Using plain integer as NULL pointer"); return 1; } @@ -205,6 +205,7 @@ int Wenum_mismatch = 1; int Wdo_while = 1; int Wuninitialized = 1; int Wold_initializer = 1; +int Wnon_pointer_null = 1; int dbg_entry = 0; int dbg_dead = 0; @@ -354,6 +355,7 @@ static const struct warning { { "do-while", &Wdo_while }, { "uninitialized", &Wuninitialized }, { "old-initializer", &Wold_initializer }, + { "non-pointer-null", &Wnon_pointer_null }, }; enum { @@ -102,6 +102,7 @@ extern int Wcast_truncate; extern int Wdo_while; extern int Wuninitialized; extern int Wold_initializer; +extern int Wnon_pointer_null; extern int dbg_entry; extern int dbg_dead; diff --git a/validation/non-pointer-null.c b/validation/non-pointer-null.c new file mode 100644 index 00000000..de23a1f8 --- /dev/null +++ b/validation/non-pointer-null.c @@ -0,0 +1 @@ +void *p = 0; |
