--- modutils-2.4.26.orig/genksyms/lex.l
+++ modutils-2.4.26/genksyms/lex.l
@@ -130,6 +130,7 @@
 
   static int suppress_type_lookup, dont_want_brace_phrase;
   static struct string_list *next_node;
+  static int next_token = 0;
 
   int token, count = 0;
   struct string_list *cur_node;
@@ -144,7 +145,12 @@
     }
 
 repeat:
-  token = yylex1();
+  if (next_token != 0) {
+    token = next_token;
+    next_token = 0;
+  }
+  else
+    token = yylex1();
 
   if (token == 0)
     return 0;
@@ -425,7 +431,7 @@
 	    {
 	      /* Put back the token we just read so's we can find it again
 		 after registering the expression.  */
-	      unput(token);
+	      next_token = token;
 
 	      lexstate = ST_NORMAL;
 	      token = EXPRESSION_PHRASE;
