kernel-doc parser mishandles declarations split into lines
Reported by Johannes Berg [1]. Problem here: function
process_proto_type() concatenates the striped lines of declaration
without any whitespace. A one-liner of::
struct something {
struct foo
bar;
};
has to be::
struct something {struct foo bar;};
Without the patching process_proto_type(), the result missed the space
between 'foo' and 'bar'::
struct something {struct foobar;};
Bugfix of process_proto_type() brings next error when blank lines
between enum declaration::
warning: Enum value ' ' not described in enum 'foo'
Problem here: dump_enum() does not strip leading whitespaces from
the concatenated string (with the new additional space from
process_proto_type).
[1] https://www.mail-archive.com/linux-doc@vger.kernel.org/msg12410.html
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
pull/458/head
parent
33c2f4ec98
commit
463a0fdc3e
|
|
@ -2226,6 +2226,7 @@ sub dump_enum($$) {
|
||||||
if ($x =~ /enum\s+(\w+)\s*{(.*)}/) {
|
if ($x =~ /enum\s+(\w+)\s*{(.*)}/) {
|
||||||
$declaration_name = $1;
|
$declaration_name = $1;
|
||||||
my $members = $2;
|
my $members = $2;
|
||||||
|
$members =~ s/\s+$//;
|
||||||
|
|
||||||
foreach my $arg (split ',', $members) {
|
foreach my $arg (split ',', $members) {
|
||||||
$arg =~ s/^\s*(\w+).*/$1/;
|
$arg =~ s/^\s*(\w+).*/$1/;
|
||||||
|
|
@ -2766,6 +2767,9 @@ sub process_proto_type($$) {
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
if ( $x =~ /([^{};]*)([{};])(.*)/ ) {
|
if ( $x =~ /([^{};]*)([{};])(.*)/ ) {
|
||||||
|
if( length $prototype ) {
|
||||||
|
$prototype .= " "
|
||||||
|
}
|
||||||
$prototype .= $1 . $2;
|
$prototype .= $1 . $2;
|
||||||
($2 eq '{') && $brcount++;
|
($2 eq '{') && $brcount++;
|
||||||
($2 eq '}') && $brcount--;
|
($2 eq '}') && $brcount--;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue