diff options
author | Andy Whitcroft <apw@canonical.com> | 2010-10-26 17:23:19 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-26 19:52:21 -0400 |
commit | 01464f30a97c5c30bf9633309b27cce055cef8fd (patch) | |
tree | 5ba4eb55ff1b520cbbc82f5f32a7bc81c666d8da /scripts/checkpatch.pl | |
parent | 3cbf62df3a8ce61cb1aa20b7dae964058988bfdd (diff) |
checkpatch: statement/block context analyser should look at sanitised lines
When tracking context to find a block or statement we need to use the
sanitised lines, else perentheses '(' & ')' and braces '{' & '}' can throw
the scanner out. Also fix up a couple of error outputs which include
those sanitised lines incorrectly.
Signed-off-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'scripts/checkpatch.pl')
-rwxr-xr-x | scripts/checkpatch.pl | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 8ab45b72b396..d086ffe377d5 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl | |||
@@ -691,15 +691,15 @@ sub ctx_block_get { | |||
691 | $blk .= $rawlines[$line]; | 691 | $blk .= $rawlines[$line]; |
692 | 692 | ||
693 | # Handle nested #if/#else. | 693 | # Handle nested #if/#else. |
694 | if ($rawlines[$line] =~ /^.\s*#\s*(?:ifndef|ifdef|if)\s/) { | 694 | if ($lines[$line] =~ /^.\s*#\s*(?:ifndef|ifdef|if)\s/) { |
695 | push(@stack, $level); | 695 | push(@stack, $level); |
696 | } elsif ($rawlines[$line] =~ /^.\s*#\s*(?:else|elif)\b/) { | 696 | } elsif ($lines[$line] =~ /^.\s*#\s*(?:else|elif)\b/) { |
697 | $level = $stack[$#stack - 1]; | 697 | $level = $stack[$#stack - 1]; |
698 | } elsif ($rawlines[$line] =~ /^.\s*#\s*endif\b/) { | 698 | } elsif ($lines[$line] =~ /^.\s*#\s*endif\b/) { |
699 | $level = pop(@stack); | 699 | $level = pop(@stack); |
700 | } | 700 | } |
701 | 701 | ||
702 | foreach my $c (split(//, $rawlines[$line])) { | 702 | foreach my $c (split(//, $lines[$line])) { |
703 | ##print "C<$c>L<$level><$open$close>O<$off>\n"; | 703 | ##print "C<$c>L<$level><$open$close>O<$off>\n"; |
704 | if ($off > 0) { | 704 | if ($off > 0) { |
705 | $off--; | 705 | $off--; |
@@ -1652,7 +1652,7 @@ sub process { | |||
1652 | 1652 | ||
1653 | if ($ctx !~ /{\s*/ && defined($lines[$ctx_ln -1]) && $lines[$ctx_ln - 1] =~ /^\+\s*{/) { | 1653 | if ($ctx !~ /{\s*/ && defined($lines[$ctx_ln -1]) && $lines[$ctx_ln - 1] =~ /^\+\s*{/) { |
1654 | ERROR("that open brace { should be on the previous line\n" . | 1654 | ERROR("that open brace { should be on the previous line\n" . |
1655 | "$here\n$ctx\n$lines[$ctx_ln - 1]\n"); | 1655 | "$here\n$ctx\n$rawlines[$ctx_ln - 1]\n"); |
1656 | } | 1656 | } |
1657 | if ($level == 0 && $pre_ctx !~ /}\s*while\s*\($/ && | 1657 | if ($level == 0 && $pre_ctx !~ /}\s*while\s*\($/ && |
1658 | $ctx =~ /\)\s*\;\s*$/ && | 1658 | $ctx =~ /\)\s*\;\s*$/ && |
@@ -1661,7 +1661,7 @@ sub process { | |||
1661 | my ($nlength, $nindent) = line_stats($lines[$ctx_ln - 1]); | 1661 | my ($nlength, $nindent) = line_stats($lines[$ctx_ln - 1]); |
1662 | if ($nindent > $indent) { | 1662 | if ($nindent > $indent) { |
1663 | WARN("trailing semicolon indicates no statements, indent implies otherwise\n" . | 1663 | WARN("trailing semicolon indicates no statements, indent implies otherwise\n" . |
1664 | "$here\n$ctx\n$lines[$ctx_ln - 1]\n"); | 1664 | "$here\n$ctx\n$rawlines[$ctx_ln - 1]\n"); |
1665 | } | 1665 | } |
1666 | } | 1666 | } |
1667 | } | 1667 | } |