diff -ru grep-2.5.orig/src/dfa.c grep-2.5/src/dfa.c --- grep-2.5.orig/src/dfa.c 2001-09-26 09:57:55.000000000 -0700 +++ grep-2.5/src/dfa.c 2004-05-14 13:48:46.000000000 -0700 @@ -1052,12 +1052,14 @@ setbit_case_fold (c, ccl); } else { /* POSIX locales are painful - leave the decision to libc */ - char expr[6] = { '[', c, '-', c2, ']', '\0' }; + char expr[6]; regex_t re; + sprintf (expr, "[%c-%c]", c, c2); if (regcomp (&re, expr, case_fold ? REG_ICASE : 0) == REG_NOERROR) { for (c = 0; c < NOTCHAR; ++c) { - char buf[2] = { c, '\0' }; + char buf[2]; regmatch_t mat; + sprintf (buf, "%c", c); if (regexec (&re, buf, 1, &mat, 0) == REG_NOERROR && mat.rm_so == 0 && mat.rm_eo == 1) setbit_case_fold (c, ccl);