diff options
author | Daniel Gustafsson <daniel@yesql.se> | 2019-11-28 14:16:02 +0100 |
---|---|---|
committer | Daniel Gustafsson <daniel@yesql.se> | 2019-11-28 14:18:16 +0100 |
commit | ba82673dac3e8d00a76aa5e3779a0cb80e7442af (patch) | |
tree | e3ec5f146e8730255b7645609037a9b946ff40bd /lib/checksrc.pl | |
parent | a956a8c5b48414c838129df1c082026fc5a275ab (diff) | |
download | curl-ba82673dac3e8d00a76aa5e3779a0cb80e7442af.tar.gz |
checksrc: fix regexp for ASSIGNWITHINCONDITION
The regexp looking for assignments within conditions was too greedy
and matched a too long string in the case of multiple conditionals
on the same line. This is basically only a problem in single line
macros, and the code which exemplified this was essentially:
do { if((x) != NULL) { x = NULL; } } while(0)
..where the final parenthesis of while(0) matched the regexp, and
the legal assignment in the block triggered the warning. Fix by
making the regexp less greedy by matching for the tell-tale signs
of the if statement ending.
Also remove the one occurrence where the warning was disabled due
to a construction like the above, where the warning didn't apply
when fixed.
Closes #4647
Reviewed-by: Daniel Stenberg <daniel@haxx.se>
Diffstat (limited to 'lib/checksrc.pl')
-rwxr-xr-x | lib/checksrc.pl | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/checksrc.pl b/lib/checksrc.pl index 834364561..db9a45dff 100755 --- a/lib/checksrc.pl +++ b/lib/checksrc.pl @@ -457,7 +457,7 @@ sub scanfile { } } - if($nostr =~ /^((.*)(if) *\()(.*)\)/) { + if($nostr =~ /^((.*)(if) *\()(.*)\) [{\n]/) { my $pos = length($1); if($4 =~ / = /) { checkwarn("ASSIGNWITHINCONDITION", |