From f35f5078320e4080e56e895cbb03e2cb6472e732 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Fri, 4 Sep 2020 13:36:23 -0400 Subject: [PATCH] Never backup closed buffers --- internal/buffer/backup.go | 6 +++++- internal/buffer/buffer.go | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/buffer/backup.go b/internal/buffer/backup.go index f23627ab..419b4a9b 100644 --- a/internal/buffer/backup.go +++ b/internal/buffer/backup.go @@ -5,6 +5,7 @@ import ( "io" "os" "path/filepath" + "sync/atomic" "time" "github.com/zyedidia/micro/v2/internal/config" @@ -36,7 +37,10 @@ func backupThread() { for len(backupRequestChan) > 0 { b := <-backupRequestChan - b.Backup() + bfini := atomic.LoadInt32(&(b.fini)) != 0 + if !bfini { + b.Backup() + } } } } diff --git a/internal/buffer/buffer.go b/internal/buffer/buffer.go index dfbd3644..ae66be4b 100644 --- a/internal/buffer/buffer.go +++ b/internal/buffer/buffer.go @@ -14,6 +14,7 @@ import ( "strconv" "strings" "sync" + "sync/atomic" "time" luar "layeh.com/gopher-luar" @@ -184,6 +185,7 @@ type Buffer struct { *EventHandler *SharedBuffer + fini int32 cursors []*Cursor curCursor int StartCursor Loc @@ -396,6 +398,8 @@ func (b *Buffer) Fini() { if b.Type == BTStdout { fmt.Fprint(util.Stdout, string(b.Bytes())) } + + atomic.StoreInt32(&(b.fini), int32(1)) } // GetName returns the name that should be displayed in the statusline