serialize: Perform write process safe

This commit is contained in:
Jöran Karl
2024-06-01 15:27:06 +02:00
parent 022ec0228a
commit c972360386

View File

@@ -1,15 +1,13 @@
package buffer package buffer
import ( import (
"bytes"
"encoding/gob" "encoding/gob"
"errors" "errors"
"io"
"os" "os"
"path/filepath" "path/filepath"
"time" "time"
"golang.org/x/text/encoding"
"github.com/zyedidia/micro/v2/internal/config" "github.com/zyedidia/micro/v2/internal/config"
"github.com/zyedidia/micro/v2/internal/util" "github.com/zyedidia/micro/v2/internal/util"
) )
@@ -31,16 +29,18 @@ func (b *Buffer) Serialize() error {
return nil return nil
} }
name := util.DetermineEscapePath(filepath.Join(config.ConfigDir, "buffers"), b.AbsPath) var buf bytes.Buffer
err := gob.NewEncoder(&buf).Encode(SerializedBuffer{
return overwriteFile(name, encoding.Nop, func(file io.Writer) error {
err := gob.NewEncoder(file).Encode(SerializedBuffer{
b.EventHandler, b.EventHandler,
b.GetActiveCursor().Loc, b.GetActiveCursor().Loc,
b.ModTime, b.ModTime,
}) })
if err != nil {
return err return err
}, false) }
name := util.DetermineEscapePath(filepath.Join(config.ConfigDir, "buffers"), b.AbsPath)
return util.SafeWrite(name, buf.Bytes(), true)
} }
// Unserialize loads the buffer info from config.ConfigDir/buffers // Unserialize loads the buffer info from config.ConfigDir/buffers