patch 9.1.1197: process_next_cpt_value() uses wrong condition

Problem:  process_next_cpt_value() uses wrong condition
Solution: use cfc_has_mode() instead and remove redundant else if branch
          (glepnir)

closes: #16833

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/insexpand.c b/src/insexpand.c
index d8bb081..35d20d0 100644
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -3671,7 +3671,7 @@
 	ins_compl_next_state_T *st,
 	int		*compl_type_arg,
 	pos_T		*start_match_pos,
-	int		in_fuzzy)
+	int		fuzzy_collect)
 {
     int	    compl_type = -1;
     int	    status = INS_COMPL_CPT_OK;
@@ -3687,7 +3687,7 @@
 	st->first_match_pos = *start_match_pos;
 	// Move the cursor back one character so that ^N can match the
 	// word immediately after the cursor.
-	if (ctrl_x_mode_normal() && (!in_fuzzy && dec(&st->first_match_pos) < 0))
+	if (ctrl_x_mode_normal() && (!fuzzy_collect && dec(&st->first_match_pos) < 0))
 	{
 	    // Move the cursor to after the last character in the
 	    // buffer, so that word at start of buffer is found
@@ -4487,7 +4487,6 @@
     int		i;
     int		found_new_match;
     int		type = ctrl_x_mode;
-    int		in_fuzzy = (get_cot_flags() & COT_FUZZY) != 0;
 
     if (!compl_started)
     {
@@ -4528,7 +4527,7 @@
 	if ((ctrl_x_mode_normal() || ctrl_x_mode_line_or_eval())
 					&& (!compl_started || st.found_all))
 	{
-	    int status = process_next_cpt_value(&st, &type, ini, in_fuzzy);
+	    int status = process_next_cpt_value(&st, &type, ini, cfc_has_mode());
 
 	    if (status == INS_COMPL_CPT_END)
 		break;
diff --git a/src/search.c b/src/search.c
index 654b896..064ed3e 100644
--- a/src/search.c
+++ b/src/search.c
@@ -5229,7 +5229,7 @@
  * - `*len` is set to the length of the matched word.
  * - `*score` contains the match score.
  *
- * If no match is found, `*ptr` is updated to to the end of the line.
+ * If no match is found, `*ptr` is updated to the end of the line.
  */
     int
 fuzzy_match_str_in_line(
@@ -5313,10 +5313,7 @@
     pos_T	circly_end;
     int		found_new_match = FALSE;
     int		looped_around = FALSE;
-
-    int whole_line = ctrl_x_mode_whole_line();
-    if (whole_line)
-	current_pos.lnum += dir;
+    int		whole_line = ctrl_x_mode_whole_line();
 
     if (buf == curbuf)
         circly_end = *start_pos;
@@ -5327,6 +5324,9 @@
         circly_end.coladd = 0;
     }
 
+    if (whole_line && start_pos->lnum != pos->lnum)
+	current_pos.lnum += dir;
+
     do {
 
 	// Check if looped around and back to start position
@@ -5338,13 +5338,15 @@
 	{
 	    // Get the current line buffer
 	    *ptr = ml_get_buf(buf, current_pos.lnum, FALSE);
+	    if (!whole_line)
+		*ptr += current_pos.col;
+
 	    // If ptr is end of line is reached, move to next line
 	    // or previous line based on direction
 	    if (*ptr != NULL && **ptr != NUL)
 	    {
 		if (!whole_line)
 		{
-		    *ptr += current_pos.col;
 		    // Try to find a fuzzy match in the current line starting
 		    // from current position
 		    found_new_match = fuzzy_match_str_in_line(ptr, pattern,
@@ -5371,8 +5373,6 @@
 				    else
 				       next_word_end = find_word_end(next_word_end);
 				}
-				else if (looped_around)
-				    found_new_match = FALSE;
 
 				*len = next_word_end - *ptr;
 				current_pos.col = *len;
diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim
index e63b133..e2a69f3 100644
--- a/src/testdir/test_ins_complete.vim
+++ b/src/testdir/test_ins_complete.vim
@@ -2949,6 +2949,12 @@
   call feedkeys("STe\<C-X>\<C-N>x\<CR>\<Esc>0", 'tx!')
   call assert_equal('Tex', getline(line('.') - 1))
 
+  call setline(1, ['fuzzy', 'fuzzycollect', 'completefuzzycollect'])
+  call feedkeys("Gofuzzy\<C-X>\<C-N>\<C-N>\<C-N>\<CR>\<Esc>0", 'tx!')
+  call assert_equal('fuzzycollect', getline(line('.') - 1))
+  call feedkeys("Gofuzzy\<C-X>\<C-N>\<C-N>\<C-N>\<C-N>\<CR>\<Esc>0", 'tx!')
+  call assert_equal('completefuzzycollect', getline(line('.') - 1))
+
   bw!
   bw!
   set completeopt& cfc& cpt&
diff --git a/src/version.c b/src/version.c
index 474d2c7..65332f5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1197,
+/**/
     1196,
 /**/
     1195,