diff -u libparser/C.c libparser/C.c
--- libparser/C.c	17 Feb 2012 13:49:56 -0000
+++ libparser/C.c	17 Feb 2012 16:02:21 -0000
@@ -362,8 +362,11 @@
 						c = nexttoken(interest_enum, c_reserved_word);
 					}
 				
-					if (c == '{' /* } */ && c_ == C_ENUM) {
-						c = enumerator_list(param);
+					if (c_ == C_ENUM) {
+						if (c == '{') /* } */
+							c = enumerator_list(param);
+						else
+							pushbacktoken();
 					} else {
 						for (; c != EOF; c = nexttoken(interest_enum, c_reserved_word)) {
 							switch (c) {
diff -u libparser/Cpp.c libparser/Cpp.c
--- libparser/Cpp.c	17 Feb 2012 13:49:56 -0000
+++ libparser/Cpp.c	17 Feb 2012 16:02:21 -0000
@@ -410,8 +410,11 @@
 						}
 						c = nexttoken(interest_enum, cpp_reserved_word);
 					}
-					if (c == '{' /* } */ && c_ == CPP_ENUM) {
-						c = enumerator_list(param);
+					if (c_ == CPP_ENUM) {
+						if (c == '{') /* } */
+							c = enumerator_list(param);
+						else
+							pushbacktoken();
 					} else {
 						for (; c != EOF; c = nexttoken(interest_enum, cpp_reserved_word)) {
 							switch (c) {
