From 304a2260e8945d2fa54438bcb7b293d23d9a90f0 Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Sun, 12 Feb 2017 16:21:44 -0800 Subject: [PATCH] Don't close writers with defer --- smtpd/filestore.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/smtpd/filestore.go b/smtpd/filestore.go index d59699a..361acc2 100644 --- a/smtpd/filestore.go +++ b/smtpd/filestore.go @@ -254,22 +254,22 @@ func (mb *FileMailbox) writeIndex() error { if err != nil { return err } - defer func() { - if err := file.Close(); err != nil { - log.Errorf("Failed to close %q: %v", mb.indexPath, err) - } - }() writer := bufio.NewWriter(file) - // Write each message and then flush enc := gob.NewEncoder(writer) for _, m := range mb.messages { err = enc.Encode(m) if err != nil { + _ = file.Close() return err } } if err := writer.Flush(); err != nil { + _ = file.Close() + return err + } + if err := file.Close(); err != nil { + log.Errorf("Failed to close %q: %v", mb.indexPath, err) return err } } else {