summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2023-04-27 16:29:45 +0200
committerDaniel Stenberg <daniel@haxx.se>2023-04-27 17:24:47 +0200
commitd567cca1de689fb08da3557f81e7cae34257e438 (patch)
tree9ecf3b7a85bd5e6d3506ccf8a5ab55e4e3b894ed /scripts
parent4578ada4a0d14039cac1306fbc736851a9cb753c (diff)
downloadcurl-d567cca1de689fb08da3557f81e7cae34257e438.tar.gz
checksrc: fix SPACEBEFOREPAREN for conditions starting with "*"
The open paren check wants to warn for spaces before open parenthesis for if/while/for but also for any function call. In order to avoid catching function pointer declarations, the logic allows a space if the first character after the open parenthesis is an asterisk. I also spotted what we did not include "switch" in the check but we should. This check is a little lame, but we reduce this problem by not allowing that space for if/while/for/switch. Reported-by: Emanuele Torre Closes #11044
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/checksrc.pl12
1 files changed, 7 insertions, 5 deletions
diff --git a/scripts/checksrc.pl b/scripts/checksrc.pl
index 2aab0ad8f..974184bbd 100755
--- a/scripts/checksrc.pl
+++ b/scripts/checksrc.pl
@@ -517,7 +517,8 @@ sub scanfile {
my $nostr = nostrings($l);
# check spaces after for/if/while/function call
- if($nostr =~ /^(.*)(for|if|while| ([a-zA-Z0-9_]+)) \((.)/) {
+ if($nostr =~ /^(.*)(for|if|while|switch| ([a-zA-Z0-9_]+)) \((.)/) {
+ my ($leading, $word, $extra, $first)=($1,$2,$3,$4);
if($1 =~ / *\#/) {
# this is a #if, treat it differently
}
@@ -527,15 +528,16 @@ sub scanfile {
elsif(defined $3 && $3 eq "case") {
# case must have a space
}
- elsif($4 eq "*") {
- # (* beginning makes the space OK!
+ elsif(($first eq "*") && ($word !~ /(for|if|while|switch)/)) {
+ # A "(*" beginning makes the space OK because it wants to
+ # allow funcion pointer declared
}
elsif($1 =~ / *typedef/) {
# typedefs can use space-paren
}
else {
- checkwarn("SPACEBEFOREPAREN", $line, length($1)+length($2), $file, $l,
- "$2 with space");
+ checkwarn("SPACEBEFOREPAREN", $line, length($leading)+length($word), $file, $l,
+ "$word with space");
}
}
# check for '== NULL' in if/while conditions but not if the thing on