On 21/12/2016 19:01, Eduardo Habkost wrote: > The following code replaces the whole "{ .driver = ... }" block > with "1": > > # Flatten any parentheses and braces > while ($dstat =~ s/\([^\(\)]*\)/1/ || > $dstat =~ s/\{[^\{\}]*\}/1/ || > $dstat =~ s/\[[^\{\}]*\]/1/) > { > }
Maybe change it like - $dstat =~ s/\{[^\{\}]*\}/1/ || + $dstat =~ s/\{[^\{\}]*;[^\{\}]*\}/1;/ || so that it requires a statement? It would have a false positive on strings containing a semicolon, but that's not a big deal (or could be fixed by similarly turning strings into just ""). Paolo > The following change fixes the bug, but I don't know if it has > unwanted side-effects: > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl > index f084542..0aab3ac 100755 > --- a/scripts/checkpatch.pl > +++ b/scripts/checkpatch.pl > @@ -2200,6 +2200,10 @@ sub process { > $dstat =~ s/^\s*//s; > $dstat =~ s/\s*$//s; > > + # remove braces that cover the whole block, if any: > + $dstat =~ s/^\{//; > + $dstat =~ s/\}$//; > + > # Flatten any parentheses and braces > while ($dstat =~ s/\([^\(\)]*\)/1/ || > $dstat =~ s/\{[^\{\}]*\}/1/ || Paolo