updated for version 7.3.871
Problem:    search('^$', 'c') does not use the empty match under the cursor.
Solution:   Special handling of the 'c' flag. (Christian Brabandt)
            Add tests.
diff --git a/src/search.c b/src/search.c
index fc74680..934e4b0 100644
--- a/src/search.c
+++ b/src/search.c
@@ -727,6 +727,8 @@
 					++matchcol;
 				}
 			    }
+			    if (options & SEARCH_START)
+				break;
 			    if (ptr[matchcol] == NUL
 				    || (nmatched = vim_regexec_multi(&regmatch,
 					      win, buf, lnum + matchpos.lnum,
diff --git a/src/testdir/test14.in b/src/testdir/test14.in
index 05c8025..b6f2f57 100644
--- a/src/testdir/test14.in
+++ b/src/testdir/test14.in
@@ -2,6 +2,7 @@
 Also test ":s/pat/sub/" with different ~s in sub.
 Also test for ^Vxff and ^Vo123 in Insert mode.
 Also test "[m", "]m", "[M" and "]M"
+Also test search()
 
 STARTTEST
 :so small.vim
@@ -34,6 +35,16 @@
 2[MaJ:.w >>test.out
 k[MaK:.w >>test.out
 3[MaL:.w >>test.out
+:"
+/^foobar
+:let startline = line('.')
+:call search('foobar', 'c')
+:call append(line('$'), line('.') - startline)
+j:call search('^$', 'c')
+:call append(line('$'), line('.') - startline)
+:call search('^$', 'bc')
+:call append(line('$'), line('.') - startline)
+:/^search()/,$w >>test.out
 :qa!
 ENDTEST
 
@@ -64,3 +75,8 @@
 		}
 	} e3
 }
+
+foobar
+
+
+search()
diff --git a/src/testdir/test14.ok b/src/testdir/test14.ok
index e893ba8..fb795a8 100644
--- a/src/testdir/test14.ok
+++ b/src/testdir/test14.ok
@@ -15,3 +15,7 @@
 	}JH e3
 	}K e2
 {LF
+search()
+0
+1
+1
diff --git a/src/version.c b/src/version.c
index 7705a21..1a652ac 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    871,
+/**/
     870,
 /**/
     869,