diff options
| author | Gregory Bean <gbean@codeaurora.org> | 2011-05-11 09:11:12 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:51:45 -0700 |
| commit | b88c73213a63697e0dbe81a26b9c1687244a1e82 (patch) | |
| tree | ac97ba1de61dd4625c84c0434c9b8ec919319cb5 /scripts/checkpatch.pl | |
| parent | cf032648ebdf301b5c365e0852abf29c654b72da (diff) | |
checkpatch: Handle long multi-line macros better.
Improve parsing of multiline macros which run beyond the available
diff context. These beyond-the-horizon macros previously caused
two distinct naughty behaviors:
- The scanner, confused by the trailing backslash, would grab
the header of the next context hunk and treat it as the last
line of the preceding macro.
- The analyzer, unable to fully reduce the macro, would blame
the patch for submitting an unbalanced or unprotected macro.
Change-Id: I6b7dd3d577c524d30b59dff7b20393bb5135f16d
Signed-off-by: Gregory Bean <gbean@codeaurora.org>
(cherry picked from commit ddd028c47b4d91aa9c0e97445eb584b2de367769)
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
Diffstat (limited to 'scripts/checkpatch.pl')
| -rwxr-xr-x | scripts/checkpatch.pl | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index b1a2511de9b8..70596ddf22f0 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -4533,7 +4533,7 @@ sub process { if ($realfile !~ m@/vmlinux.lds.h$@ && $line =~ /^.\s*\#\s*define\s*$Ident(\()?/) { my $ln = $linenr; - my $cnt = $realcnt; + my $cnt = $realcnt - 1; my ($off, $dstat, $dcond, $rest); my $ctx = ''; my $has_flow_statement = 0; @@ -4560,6 +4560,12 @@ sub process { { } + # Extremely long macros may fall off the end of the + # available context without closing. Give a dangling + # backslash the benefit of the doubt and allow it + # to gobble any hanging open-parens. + $dstat =~ s/\(.+\\$/1/; + # Flatten any obvious string concatentation. while ($dstat =~ s/($String)\s*$Ident/$1/ || $dstat =~ s/$Ident\s*($String)/$1/) |
