From f049262a6105ecad71e5515300cbb0239800b10d Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 7 Feb 2012 10:54:22 -0500 Subject: [PATCH] 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 --- gobject/glib-mkenums.in | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gobject/glib-mkenums.in b/gobject/glib-mkenums.in index 34440aa04..b776e1f41 100755 --- a/gobject/glib-mkenums.in +++ b/gobject/glib-mkenums.in @@ -290,6 +290,9 @@ while (<>) { ([^*]+|\*(?!/))* \*/@@gx; + # ignore forward declarations + next if /^\s*typedef\s+enum.*;/; + if (m@^\s*typedef\s+enum\s* ({)?\s* (?:/\*< @@ -321,6 +324,9 @@ while (<>) { # Didn't have trailing '{' look on next lines if (!defined $1 && !defined $4) { while (<>) { + if (eof) { + die "Hit end of file while parsing enum in $ARGV"; + } if (s/^\s*\{//) { last; }