summaryrefslogtreecommitdiff
path: root/scripts/checkpatch.pl
diff options
context:
space:
mode:
authorGregory Bean <gbean@codeaurora.org>2011-05-11 09:11:12 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:51:45 -0700
commitb88c73213a63697e0dbe81a26b9c1687244a1e82 (patch)
treeac97ba1de61dd4625c84c0434c9b8ec919319cb5 /scripts/checkpatch.pl
parentcf032648ebdf301b5c365e0852abf29c654b72da (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-xscripts/checkpatch.pl8
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/)