From 82bb1153d7b7ff1c50725bf34bd3cbc75b228137 Mon Sep 17 00:00:00 2001 From: sachin-puranik <41720019+sachin-puranik@users.noreply.github.com> Date: Sat, 23 May 2020 10:21:46 +0530 Subject: [PATCH] Improved error handling and stoped the crash due to fatel error (#593) close #624 --- lib.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib.go b/lib.go index 41b03c70..5b7e6d0e 100644 --- a/lib.go +++ b/lib.go @@ -24,10 +24,13 @@ import ( // ReadZipReader can be used to read the spreadsheet in memory without touching the // filesystem. func ReadZipReader(r *zip.Reader) (map[string][]byte, int, error) { + var err error fileList := make(map[string][]byte, len(r.File)) worksheets := 0 for _, v := range r.File { - fileList[v.Name] = readFile(v) + if fileList[v.Name], err = readFile(v); err != nil { + return nil, 0, err + } if strings.HasPrefix(v.Name, "xl/worksheets/sheet") { worksheets++ } @@ -53,16 +56,17 @@ func (f *File) saveFileList(name string, content []byte) { } // Read file content as string in a archive file. -func readFile(file *zip.File) []byte { +func readFile(file *zip.File) ([]byte, error) { rc, err := file.Open() if err != nil { - log.Fatal(err) + log.Println(err) + return nil, err } dat := make([]byte, 0, file.FileInfo().Size()) buff := bytes.NewBuffer(dat) _, _ = io.Copy(buff, rc) rc.Close() - return buff.Bytes() + return buff.Bytes(), nil } // SplitCellName splits cell name to column name and row number.