diff --git a/src/evalfunc.c b/src/evalfunc.c
index 6335a64..b7d7643 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -8975,6 +8975,10 @@
     if (skip != NULL)
 	use_skip = eval_expr_valid_arg(skip);
 
+#ifdef FEAT_RELTIME
+    if (time_limit > 0)
+	init_regexp_timeout(time_limit);
+#endif
     save_cursor = curwin->w_cursor;
     pos = curwin->w_cursor;
     CLEAR_POS(&firstpos);
@@ -8986,9 +8990,6 @@
 
 	CLEAR_FIELD(sia);
 	sia.sa_stop_lnum = lnum_stop;
-#ifdef FEAT_RELTIME
-	sia.sa_tm = time_limit;
-#endif
 	n = searchit(curwin, curbuf, &pos, NULL, dir, pat, 1L,
 						     options, RE_SEARCH, &sia);
 	if (n == FAIL || (firstpos.lnum != 0 && EQUAL_POS(pos, firstpos)))
@@ -9074,6 +9075,9 @@
 	curwin->w_cursor = save_cursor;
 
 theend:
+#ifdef FEAT_RELTIME
+    disable_regexp_timeout();
+#endif
     vim_free(pat2);
     vim_free(pat3);
     if (p_cpo == empty_option)
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)
     {
diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim
index b354a2f..caeddc5 100644
--- a/src/testdir/test_search.vim
+++ b/src/testdir/test_search.vim
@@ -328,7 +328,31 @@
   call assert_equal(3, searchpair('\<if\>', '\<else\>', '\<endif\>', 'W'))
   call assert_equal([0, 3, 3, 0], getpos('.'))
 
-  q!
+  bwipe!
+endfunc
+
+func Test_searchpair_timeout()
+  CheckFeature reltime
+
+  func Waitabit()
+    sleep 20m
+    return 1  " skip match
+  endfunc
+
+  new
+  call setline(1, range(100))
+  call setline(1, "(start here")
+  call setline(100, "end here)")
+  let starttime = reltime()
+
+  " A timeout of 100 msec should happen after about five times of 20 msec wait
+  " in Waitabit().  When the timeout applies to each search the elapsed time
+  " will be much longer.
+  call assert_equal(0, searchpair('(', '\d', ')', '', "Waitabit()", 0, 100))
+  let elapsed = reltime(starttime)->reltimefloat()
+  call assert_inrange(0.09, 0.300, elapsed)
+
+  bwipe!
 endfunc
 
 func Test_searchpairpos()
diff --git a/src/version.c b/src/version.c
index bfa9c5a..3edd318 100644
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    5114,
+/**/
     5113,
 /**/
     5112,
