patch 8.2.4553: linear tag search is a bit slow

Problem:    Linear tag search is a bit slow.
Solution:   Remove a vim_ftell() call. (Yegappan Lakshmanan, closes #9937)
diff --git a/src/tag.c b/src/tag.c
index 45b3062..4cf11dc 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -2092,10 +2092,7 @@
 		eof = cs_fgets(st->lbuf, st->lbuf_size);
 	    else
 #endif
-	    {
-		sinfo_p->curr_offset = vim_ftell(st->fp);
 		eof = vim_fgets(st->lbuf, st->lbuf_size, st->fp);
-	    }
 	} while (!eof && vim_isblankline(st->lbuf));
 
 	if (eof)
@@ -2850,7 +2847,7 @@
 		return;
 	    }
 
-	    if (st->state == TS_STEP_FORWARD)
+	    if (st->state == TS_STEP_FORWARD || st->state == TS_LINEAR)
 		// Seek to the same position to read the same line again
 		vim_ignored = vim_fseek(st->fp, search_info.curr_offset,
 								     SEEK_SET);
diff --git a/src/testdir/test_taglist.vim b/src/testdir/test_taglist.vim
index 04ca02d..23ef107 100644
--- a/src/testdir/test_taglist.vim
+++ b/src/testdir/test_taglist.vim
@@ -259,8 +259,15 @@
   call writefile(tagslines, 'Xtags')
   set tags=Xtags
 
+  " try with binary search
+  set tagbsearch
   call feedkeys(":tag inbou\<C-A>\<C-B>\"\<CR>", 'xt')
   call assert_equal('"tag inboundGSV inboundGovernor inboundGovernorCounters', @:)
+  " try with linear search
+  set notagbsearch
+  call feedkeys(":tag inbou\<C-A>\<C-B>\"\<CR>", 'xt')
+  call assert_equal('"tag inboundGSV inboundGovernor inboundGovernorCounters', @:)
+  set tagbsearch&
 
   call delete('Xtags')
   set tags&
diff --git a/src/version.c b/src/version.c
index acc5ccf..0c90e2d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4553,
+/**/
     4552,
 /**/
     4551,