If grep is set to search for fixed strings (-F), the empty string is given
(””), and the locale is UTF8, then grep runs undefinitely. When FExecute
searches for a match of the empty string, variable len contains the size of the
match; here, len=0 (kwsearch.c:106).  Because len=0, the check is_mb_middle
(searchutils.c:117-146) whether the match occurs within a multibyte character
returns true (kwsearch.c:108). However, the size of the supposed multibyte
character is computed as mb_len=1 (kwsearch.c:115). When mb_len-1 is added to
beg (kwsearch.c:118) to advance behind the supposed multibyte character, beg’s
value remains unchanged. The loop is continue’d (kwsearch.c:121). Since beg has
the same value every time the loop exit condition is checked (kwsearch.c:101),
the loop exit condition never holds, resulting in an infinite loop. 

Examples of Correct Fixes: 
1) Function is_mb_middle returns false for len=0. 
2) Only call is_mb_middle if len is set. 
3) Jump to success if mb_len==1. 

Examples of Incorrect Fixes: 
1) Remove continue (Treating the Symptom). 
2) Don’t reset beg (Regression because it breaks multibyte character handling). 
3) Remove part of the check which causes is_mb_middle to return true
   (Regression because it breaks multibyte character handling). 
4) Do not compute match_size but teturn complete buffer until end of line
   (Regression because only match should be returned).
