From 3acb4ca90e1c5f92cafc9794383c1ae1eb754023 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sun, 14 Apr 2024 23:34:25 +0900 Subject: [PATCH] Fix streaming filter mode by not running reader callback concurrently Close #3728 --- src/core.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core.go b/src/core.go index 8253c49e..3d84c733 100644 --- a/src/core.go +++ b/src/core.go @@ -3,6 +3,7 @@ package fzf import ( "fmt" + "sync" "time" "unsafe" @@ -164,14 +165,17 @@ func Run(opts *Options, version string, revision string) { found := false if streamingFilter { slab := util.MakeSlab(slab16Size, slab32Size) + mutex := sync.Mutex{} reader := NewReader( func(runes []byte) bool { item := Item{} if chunkList.trans(&item, runes) { + mutex.Lock() if result, _, _ := pattern.MatchItem(&item, false, slab); result != nil { opts.Printer(item.text.ToString()) found = true } + mutex.Unlock() } return false }, eventBox, opts.ReadZero, false)