Messages in this thread Patch in this message | | | From | Dwaipayan Ray <> | Subject | [PATCH v2] checkpatch: Fix regex for do without braces | Date | Mon, 28 Jun 2021 00:19:09 +0530 |
| |
The regular expression for detecting do without braces also passes when checkpatch encounters the "double" keyword. This causes wrong recalculation of $stat in checkpatch which can cause false positives.
Fix the regex to avoid the above. Also update the comments for the check.
Reported-by: Alejandro Colomar <alx.manpages@gmail.com> Signed-off-by: Dwaipayan Ray <dwaipayanray1@gmail.com> ---
Changes in v2: - Check word boundary on both sides of do
scripts/checkpatch.pl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 8d19beca3538..64036e7eff71 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -5488,9 +5488,8 @@ sub process { } } -# Check for illegal assignment in if conditional -- and check for trailing -# statements after the conditional. - if ($line =~ /do\s*(?!{)/) { +# If we have sufficient context detect and handle do without braces ({). + if ($line =~ /\bdo\b\s*(?!{)/) { ($stat, $cond, $line_nr_next, $remain_next, $off_next) = ctx_statement_block($linenr, $realcnt, 0) if (!defined $stat); @@ -5511,6 +5510,9 @@ sub process { $offset} = 1; } } + +# Check for illegal assignment in if conditional -- and check for trailing +# statements after the conditional. if (!defined $suppress_whiletrailers{$linenr} && defined($stat) && defined($cond) && $line =~ /\b(?:if|while|for)\s*\(/ && $line !~ /^.\s*#/) { -- 2.28.0
| |