mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 15:06:14 +01:00
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:
parent
808346c6ab
commit
f049262a61
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user