patch 8.2.5114: time limit on searchpair() does not work properly

Problem:    Time limit on searchpair() does not work properly.
Solution:   Set the time limit once instead of for each regexp. (closes #10562)
diff --git a/src/search.c b/src/search.c
index be7f35a..e78e36b 100644
--- a/src/search.c
+++ b/src/search.c
@@ -674,10 +674,10 @@
 	stop_lnum = extra_arg->sa_stop_lnum;
 #ifdef FEAT_RELTIME
 	if (extra_arg->sa_tm > 0)
-	{
 	    init_regexp_timeout(extra_arg->sa_tm);
-	    timed_out = &extra_arg->sa_timed_out;
-	}
+	// Also set the pointer when sa_tm is zero, the caller may have set the
+	// timeout.
+	timed_out = &extra_arg->sa_timed_out;
 #endif
     }
 
@@ -1105,9 +1105,10 @@
     }
     while (--count > 0 && found);   // stop after count matches or no match
 
-#   ifdef FEAT_RELTIME
-    disable_regexp_timeout();
-#   endif
+#ifdef FEAT_RELTIME
+    if (extra_arg != NULL && extra_arg->sa_tm > 0)
+	disable_regexp_timeout();
+#endif
     vim_regfree(regmatch.regprog);
 
     if (!found)		    // did not find it
@@ -4859,7 +4860,7 @@
 
     // get the fuzzy matches
     ret = rettv_list_alloc(rettv);
-    if (ret != OK)
+    if (ret == FAIL)
 	goto done;
     if (retmatchpos)
     {