forked from p30928647/excelize
Add missing error checks in `getSheetMap` to fix panic(#1437)
Unit tests updated
This commit is contained in:
parent
b39626fae9
commit
9c3a5eb983
|
@ -179,7 +179,9 @@ func OpenReader(r io.Reader, opts ...Options) (*File, error) {
|
|||
if f.CalcChain, err = f.calcChainReader(); err != nil {
|
||||
return f, err
|
||||
}
|
||||
f.sheetMap = f.getSheetMap()
|
||||
if f.sheetMap, err = f.getSheetMap(); err != nil {
|
||||
return f, err
|
||||
}
|
||||
if f.Styles, err = f.stylesReader(); err != nil {
|
||||
return f, err
|
||||
}
|
||||
|
|
|
@ -250,7 +250,10 @@ func TestOpenReader(t *testing.T) {
|
|||
assert.NoError(t, zw.Close())
|
||||
return buf
|
||||
}
|
||||
for _, defaultXMLPath := range []string{defaultXMLPathCalcChain, defaultXMLPathStyles} {
|
||||
for _, defaultXMLPath := range []string{
|
||||
defaultXMLPathCalcChain,
|
||||
defaultXMLPathStyles,
|
||||
defaultXMLPathWorkbookRels} {
|
||||
_, err = OpenReader(preset(defaultXMLPath))
|
||||
assert.EqualError(t, err, "XML syntax error on line 1: invalid UTF-8")
|
||||
}
|
||||
|
|
14
sheet.go
14
sheet.go
|
@ -454,10 +454,16 @@ func (f *File) GetSheetList() (list []string) {
|
|||
|
||||
// getSheetMap provides a function to get worksheet name and XML file path map
|
||||
// of the spreadsheet.
|
||||
func (f *File) getSheetMap() map[string]string {
|
||||
func (f *File) getSheetMap() (map[string]string, error) {
|
||||
maps := map[string]string{}
|
||||
wb, _ := f.workbookReader()
|
||||
rels, _ := f.relsReader(f.getWorkbookRelsPath())
|
||||
wb, err := f.workbookReader()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
rels, err := f.relsReader(f.getWorkbookRelsPath())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, v := range wb.Sheets.Sheet {
|
||||
for _, rel := range rels.Relationships {
|
||||
if rel.ID == v.ID {
|
||||
|
@ -471,7 +477,7 @@ func (f *File) getSheetMap() map[string]string {
|
|||
}
|
||||
}
|
||||
}
|
||||
return maps
|
||||
return maps, nil
|
||||
}
|
||||
|
||||
// getSheetXMLPath provides a function to get XML file path by given sheet
|
||||
|
|
|
@ -378,6 +378,12 @@ func TestGetSheetMap(t *testing.T) {
|
|||
}
|
||||
assert.Equal(t, len(sheetMap), 2)
|
||||
assert.NoError(t, f.Close())
|
||||
|
||||
f = NewFile()
|
||||
f.WorkBook = nil
|
||||
f.Pkg.Store(defaultXMLPathWorkbook, MacintoshCyrillicCharset)
|
||||
_, err = f.getSheetMap()
|
||||
assert.EqualError(t, err, "XML syntax error on line 1: invalid UTF-8")
|
||||
}
|
||||
|
||||
func TestSetActiveSheet(t *testing.T) {
|
||||
|
|
Loading…
Reference in New Issue