***************
*** 852,855 ****
    RL_UNSETSTATE(RL_STATE_MOREINPUT);
  
  #if defined (HANDLE_SIGNALS)
    if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
--- 858,864 ----
    RL_UNSETSTATE(RL_STATE_MOREINPUT);
  
+   if (c < 0)
+     return -1;
+ 
  #if defined (HANDLE_SIGNALS)
    if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
***************
*** 1515,1518 ****
    mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX);
  
    if (count < 0)
      return (_rl_char_search_internal (-count, bdir, mbchar, mb_len));
--- 1524,1530 ----
    mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX);
  
+   if (mb_len <= 0)
+     return -1;
+ 
    if (count < 0)
      return (_rl_char_search_internal (-count, bdir, mbchar, mb_len));
***************
*** 1531,1534 ****
    RL_UNSETSTATE(RL_STATE_MOREINPUT);
  
    if (count < 0)
      return (_rl_char_search_internal (-count, bdir, c));
--- 1543,1549 ----
    RL_UNSETSTATE(RL_STATE_MOREINPUT);
  
+   if (c < 0)
+     return -1;
+ 
    if (count < 0)
      return (_rl_char_search_internal (-count, bdir, c));
