Преглед на файлове

Merge pull request #139 from fzerorubigd/master

prevent un handled panic in open xslx
Geoffrey J. Teale преди 10 години
родител
ревизия
dd5171929a
променени са 1 файла, в които са добавени 13 реда и са изтрити 0 реда
  1. 13 0
      lib.go

+ 13 - 0
lib.go

@@ -563,6 +563,19 @@ func readSheetViews(xSheetViews xlsxSheetViews) []SheetView {
 // sheet and get the results back on the provided channel.
 func readSheetFromFile(sc chan *indexedSheet, index int, rsheet xlsxSheet, fi *File, sheetXMLMap map[string]string) {
 	result := &indexedSheet{Index: index, Sheet: nil, Error: nil}
+	defer func() {
+		if e := recover(); e != nil {
+			switch e.(type) {
+			case error:
+				result.Error = e.(error)
+			default:
+				result.Error = errors.New("unexpected error")
+			}
+			// The only thing here, is if one close the channel. but its not the case
+			sc <- result
+		}
+	}()
+
 	worksheet, error := getWorksheetFromSheet(rsheet, fi.worksheets, sheetXMLMap)
 	if error != nil {
 		result.Error = error