diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2015-01-04 05:01:13 +0900 |
|---|---|---|
| committer | Junegunn Choi <junegunn.c@gmail.com> | 2015-01-04 05:01:13 +0900 |
| commit | d2f7acbc69de26084c83bb07e2a175e05dce2fc2 (patch) | |
| tree | 66b71b67c04c2a05c9557c607441064fba72b200 /src/core.go | |
| parent | 0dd024a09fc4dd37a596a07e7ff0043537895909 (diff) | |
| download | fzf-d2f7acbc69de26084c83bb07e2a175e05dce2fc2.tar.gz | |
Remove race conditions when accessing the last chunk
Diffstat (limited to 'src/core.go')
| -rw-r--r-- | src/core.go | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/core.go b/src/core.go index 7abee80a..b6f08572 100644 --- a/src/core.go +++ b/src/core.go @@ -90,8 +90,9 @@ func Run(options *Options) { }) } + snapshot, _ := chunkList.Snapshot() matches, cancelled := matcher.scan(MatchRequest{ - chunks: chunkList.Snapshot(), + chunks: snapshot, pattern: pattern}, limit) if !cancelled && (filtering || @@ -127,11 +128,13 @@ func Run(options *Options) { case EVT_READ_NEW, EVT_READ_FIN: reading = reading && evt == EVT_READ_NEW - terminal.UpdateCount(chunkList.Count(), !reading) - matcher.Reset(chunkList.Snapshot(), terminal.Input(), false) + snapshot, count := chunkList.Snapshot() + terminal.UpdateCount(count, !reading) + matcher.Reset(snapshot, terminal.Input(), false) case EVT_SEARCH_NEW: - matcher.Reset(chunkList.Snapshot(), terminal.Input(), true) + snapshot, _ := chunkList.Snapshot() + matcher.Reset(snapshot, terminal.Input(), true) delay = false case EVT_SEARCH_PROGRESS: |
