diff --git a/src/evalfunc.c b/src/evalfunc.c
index f83559d..5383d09 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -739,6 +739,8 @@
 			ret_number_bool,    f_assert_inrange},
     {"assert_match",	2, 3, FEARG_2,	    NULL,
 			ret_number_bool,    f_assert_match},
+    {"assert_nobeep",	1, 2, FEARG_1,	    NULL,
+			ret_number_bool,    f_assert_nobeep},
     {"assert_notequal",	2, 3, FEARG_2,	    NULL,
 			ret_number_bool,    f_assert_notequal},
     {"assert_notmatch",	2, 3, FEARG_2,	    NULL,
diff --git a/src/proto/testing.pro b/src/proto/testing.pro
index b812c2a..d229030 100644
--- a/src/proto/testing.pro
+++ b/src/proto/testing.pro
@@ -1,5 +1,6 @@
 /* testing.c */
 void f_assert_beeps(typval_T *argvars, typval_T *rettv);
+void f_assert_nobeep(typval_T *argvars, typval_T *rettv);
 void f_assert_equal(typval_T *argvars, typval_T *rettv);
 void f_assert_equalfile(typval_T *argvars, typval_T *rettv);
 void f_assert_notequal(typval_T *argvars, typval_T *rettv);
diff --git a/src/search.c b/src/search.c
index d8c21f4..37ccc37 100644
--- a/src/search.c
+++ b/src/search.c
@@ -2817,6 +2817,8 @@
 	if (*p == NUL)
 	    return;
     }
+    if (*p == NUL)
+	return;
 
     if ((lpos = findmatch(NULL, NUL)) == NULL)	    // no match, so beep
 	vim_beep(BO_MATCH);
diff --git a/src/testdir/test_textformat.vim b/src/testdir/test_textformat.vim
index 32ff3cc..0dc28c7 100644
--- a/src/testdir/test_textformat.vim
+++ b/src/testdir/test_textformat.vim
@@ -858,6 +858,14 @@
   close!
 endfunc
 
+func Test_empty_matchpairs()
+  split
+  set matchpairs= showmatch
+  call assert_nobeep('call feedkeys("ax\tx\t\<Esc>", "xt")')
+  set matchpairs& noshowmatch
+  bwipe!
+endfunc
+
 func Test_mps_error()
   let encoding_save = &encoding
 
diff --git a/src/testing.c b/src/testing.c
index df19b9e..7409237 100644
--- a/src/testing.c
+++ b/src/testing.c
@@ -338,7 +338,7 @@
 }
 
     static int
-assert_beeps(typval_T *argvars)
+assert_beeps(typval_T *argvars, int no_beep)
 {
     char_u	*cmd = tv_get_string_chk(&argvars[0]);
     garray_T	ga;
@@ -348,10 +348,13 @@
     suppress_errthrow = TRUE;
     emsg_silent = FALSE;
     do_cmdline_cmd(cmd);
-    if (!called_vim_beep)
+    if (no_beep ? called_vim_beep : !called_vim_beep)
     {
 	prepare_assert_error(&ga);
-	ga_concat(&ga, (char_u *)"command did not beep: ");
+	if (no_beep)
+	    ga_concat(&ga, (char_u *)"command did beep: ");
+	else
+	    ga_concat(&ga, (char_u *)"command did not beep: ");
 	ga_concat(&ga, cmd);
 	assert_error(&ga);
 	ga_clear(&ga);
@@ -369,7 +372,16 @@
     void
 f_assert_beeps(typval_T *argvars, typval_T *rettv)
 {
-    rettv->vval.v_number = assert_beeps(argvars);
+    rettv->vval.v_number = assert_beeps(argvars, FALSE);
+}
+
+/*
+ * "assert_nobeep(cmd [, error])" function
+ */
+    void
+f_assert_nobeep(typval_T *argvars, typval_T *rettv)
+{
+    rettv->vval.v_number = assert_beeps(argvars, TRUE);
 }
 
 /*
diff --git a/src/version.c b/src/version.c
index 760a0f4..661a93c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2694,
+/**/
     2693,
 /**/
     2692,
