From f5b034095a74ae88410bf3383c39b1e99c0f36a0 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Wed, 18 Feb 2015 00:51:44 +0900 Subject: Fix race condition in asynchronous -1 and -0 --- src/matcher.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/matcher.go') diff --git a/src/matcher.go b/src/matcher.go index 84130b23..bfe9d287 100644 --- a/src/matcher.go +++ b/src/matcher.go @@ -14,6 +14,7 @@ import ( type MatchRequest struct { chunks []*Chunk pattern *Pattern + final bool } // Matcher is responsible for performing search @@ -91,6 +92,7 @@ func (m *Matcher) Loop() { if !cancelled { m.mergerCache[patternString] = merger + merger.final = request.final m.eventBox.Set(EvtSearchFin, merger) } } @@ -197,7 +199,7 @@ func (m *Matcher) scan(request MatchRequest) (*Merger, bool) { } // Reset is called to interrupt/signal the ongoing search -func (m *Matcher) Reset(chunks []*Chunk, patternRunes []rune, cancel bool) { +func (m *Matcher) Reset(chunks []*Chunk, patternRunes []rune, cancel bool, final bool) { pattern := m.patternBuilder(patternRunes) var event util.EventType @@ -206,5 +208,5 @@ func (m *Matcher) Reset(chunks []*Chunk, patternRunes []rune, cancel bool) { } else { event = reqRetry } - m.reqBox.Set(event, MatchRequest{chunks, pattern}) + m.reqBox.Set(event, MatchRequest{chunks, pattern, final}) } -- cgit v1.2.3