[glib] glib-mkenums: fix handling of forward enum declarations



commit f049262a6105ecad71e5515300cbb0239800b10d
Author: Dan Winship <danw gnome org>
Date:   Tue Feb 7 10:54:22 2012 -0500

    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 files changed, 6 insertions(+), 0 deletions(-)
---
diff --git a/gobject/glib-mkenums.in b/gobject/glib-mkenums.in
index 34440aa..b776e1f 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;
 		}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]