svn commit: r234101 - head/usr.bin/lex

Jens Schweikhardt schweikh at FreeBSD.org
Tue Apr 10 15:29:29 UTC 2012


Author: schweikh
Date: Tue Apr 10 15:29:28 2012
New Revision: 234101
URL: http://svn.freebsd.org/changeset/base/234101

Log:
  Parenthesize args in yyless() and unput() replacement text
  so they are safer when used with expressions.
  
  MFC after:	1 week

Modified:
  head/usr.bin/lex/flex.skl

Modified: head/usr.bin/lex/flex.skl
==============================================================================
--- head/usr.bin/lex/flex.skl	Tue Apr 10 14:29:56 2012	(r234100)
+++ head/usr.bin/lex/flex.skl	Tue Apr 10 15:29:28 2012	(r234101)
@@ -122,7 +122,7 @@ extern FILE *yyin, *yyout;
 #define EOB_ACT_LAST_MATCH 2
 
 /* The funky do-while in the following #define is used to turn the definition
- * int a single C statement (which needs a semi-colon terminator).  This
+ * into a single C statement (which needs a semi-colon terminator).  This
  * avoids problems with code like:
  *
  * 	if ( condition_holds )
@@ -143,12 +143,12 @@ extern FILE *yyin, *yyout;
 		/* Undo effects of setting up yytext. */ \
 		*yy_cp = yy_hold_char; \
 		YY_RESTORE_YY_MORE_OFFSET \
-		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
+		yy_c_buf_p = yy_cp = yy_bp + (n) - YY_MORE_ADJ; \
 		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
 		} \
 	while ( 0 )
 
-#define unput(c) yyunput( c, yytext_ptr )
+#define unput(c) yyunput( (c), yytext_ptr )
 
 /* The following is because we cannot portably get our hands on size_t
  * (without autoconf's help, which isn't available because we want


More information about the svn-src-all mailing list