diff -u flex-2.5.39/gen.c flex-2.5.39J/gen.c
--- flex-2.5.39/gen.c	2014-03-26 06:46:44.000000000 -0600
+++ flex-2.5.39J/gen.c	2014-04-26 10:52:30.962073096 -0600
@@ -55,6 +55,14 @@
  * 0 elements of its arrays, too.)
  */
 
+static const char *get_yy_char_decl (void)
+{
+	return (gentables)
+		? "static yyconst YY_CHAR %s[%d] =\n    {   0,\n"
+		: "static yyconst YY_CHAR * %s = 0;\n";
+}
+
+
 static const char *get_int16_decl (void)
 {
 	return (gentables)
@@ -465,7 +473,7 @@
 	register int i, j;
 	int     numrows;
 
-	out_str_dec (get_int32_decl (), "yy_ec", csize);
+	out_str_dec (get_yy_char_decl (), "yy_ec", csize);
 
 	for (i = 1; i < csize; ++i) {
 		ecgroup[i] = ABS (ecgroup[i]);
@@ -1271,7 +1279,7 @@
 			fputs (_("\n\nMeta-Equivalence Classes:\n"),
 			       stderr);
 
-		out_str_dec (get_int32_decl (), "yy_meta", numecs + 1);
+		out_str_dec (get_yy_char_decl (), "yy_meta", numecs + 1);
 		buf_prints (&yydmap_buf,
 			    "\t{YYTD_ID_META, (void**)&yy_meta, sizeof(%s)},\n",
 			    "flex_int32_t");
@@ -1516,11 +1524,11 @@
 	if (yymore_used && !yytext_is_array) {
 		indent_puts ("YY_G(yytext_ptr) -= YY_G(yy_more_len); \\");
 		indent_puts
-			("yyleng = (size_t) (yy_cp - YY_G(yytext_ptr)); \\");
+			("yyleng = (int) (yy_cp - YY_G(yytext_ptr)); \\");
 	}
 
 	else
-		indent_puts ("yyleng = (size_t) (yy_cp - yy_bp); \\");
+		indent_puts ("yyleng = (int) (yy_cp - yy_bp); \\");
 
 	/* Now also deal with copying yytext_ptr to yytext if needed. */
 	skelout ();		/* %% [3.0] - break point in skel */
