diff --git a/widgets/misc/e-search-bar.c b/widgets/misc/e-search-bar.c
index db72c58..d70106e 100644
--- a/widgets/misc/e-search-bar.c
+++ b/widgets/misc/e-search-bar.c
@@ -72,6 +72,8 @@ search_bar_update_matches (ESearchBar *search_bar)
 	gint matches;
 	gchar *text;
 
+	search_bar->priv->rerun_search = FALSE;
+
 	tokenizer = e_search_bar_get_tokenizer (search_bar);
 	matches_label = search_bar->priv->matches_label;
 
diff --git a/widgets/misc/e-searching-tokenizer.c b/widgets/misc/e-searching-tokenizer.c
index 3da81e4..3720030 100644
--- a/widgets/misc/e-searching-tokenizer.c
+++ b/widgets/misc/e-searching-tokenizer.c
@@ -401,7 +401,7 @@ searcher_new (gint flags,
 	s->tage = g_strdup (tage);
 	s->flags = flags;
 	s->state = &s->t->root;
-	s->matchcount = 0;
+	s->matchcount = -1;
 
 	g_queue_init (&s->input);
 	g_queue_init (&s->output);
@@ -1019,6 +1019,8 @@ searching_tokenizer_next_token (HTMLTokenizer *tokenizer)
 			next_token (tokenizer);
 
 	oldmatched = priv->engine->matchcount;
+	if (priv->engine->matchcount == -1)
+		priv->engine->matchcount = 0;
 
 	token = searcher_next_token (priv->engine);
 
