glib-mkenums: fix handling of forward enum declarations

Given

    typedef enum MyFoo MyFoo;

glib-mkenums would get confused, not notice the ";", and then keep
skipping lines until it found one that started with a "{", possibly
even going into the next file.

Fix it to just ignore those lines instead (and also, to error out if
it hits eof while parsing an enum).

https://bugzilla.gnome.org/show_bug.cgi?id=669595
This commit is contained in:
Dan Winship 2012-02-07 10:54:22 -05:00
parent 808346c6ab
commit f049262a61

View File

@ -290,6 +290,9 @@ while (<>) {
([^*]+|\*(?!/))* ([^*]+|\*(?!/))*
\*/@@gx; \*/@@gx;
# ignore forward declarations
next if /^\s*typedef\s+enum.*;/;
if (m@^\s*typedef\s+enum\s* if (m@^\s*typedef\s+enum\s*
({)?\s* ({)?\s*
(?:/\*< (?:/\*<
@ -321,6 +324,9 @@ while (<>) {
# Didn't have trailing '{' look on next lines # Didn't have trailing '{' look on next lines
if (!defined $1 && !defined $4) { if (!defined $1 && !defined $4) {
while (<>) { while (<>) {
if (eof) {
die "Hit end of file while parsing enum in $ARGV";
}
if (s/^\s*\{//) { if (s/^\s*\{//) {
last; last;
} }