patch 8.1.2244: 'wrapscan' is not used for "gn"

Problem:    'wrapscan' is not used for "gn".
Solution:   Only reset 'wrapscan' for the first search round. (closes #5164)
diff --git a/src/search.c b/src/search.c
index 18f7905..00f0a08 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4765,9 +4765,6 @@
     pos_T	save_VIsual = VIsual;
     int		zero_width;
 
-    /* wrapping should not occur */
-    p_ws = FALSE;
-
     /* Correct cursor when 'selection' is exclusive */
     if (VIsual_active && *p_sel == 'e' && LT_POS(VIsual, curwin->w_cursor))
 	dec_cursor();
@@ -4786,10 +4783,7 @@
     zero_width = is_zero_width(spats[last_idx].pat, TRUE, &curwin->w_cursor,
 								      FORWARD);
     if (zero_width == -1)
-    {
-	p_ws = old_p_ws;
 	return FAIL;  /* pattern not found */
-    }
 
     /*
      * The trick is to first search backwards and then search forward again,
@@ -4808,11 +4802,17 @@
 	    flags = SEARCH_END;
 	end_pos = pos;
 
+	// wrapping should not occur in the first round
+	if (i == 0)
+	    p_ws = FALSE;
+
 	result = searchit(curwin, curbuf, &pos, &end_pos,
 		(dir ? FORWARD : BACKWARD),
 		spats[last_idx].pat, (long) (i ? count : 1),
 		SEARCH_KEEP | flags, RE_SEARCH, NULL);
 
+	p_ws = old_p_ws;
+
 	/* First search may fail, but then start searching from the
 	 * beginning of the file (cursor might be on the search match)
 	 * except when Visual mode is active, so that extending the visual
@@ -4822,7 +4822,6 @@
 	    curwin->w_cursor = orig_pos;
 	    if (VIsual_active)
 		VIsual = save_VIsual;
-	    p_ws = old_p_ws;
 	    return FAIL;
 	}
 	else if (i == 0 && !result)
@@ -4844,7 +4843,6 @@
     }
 
     start_pos = pos;
-    p_ws = old_p_ws;
 
     if (!VIsual_active)
 	VIsual = start_pos;