From 12ace59f6e37d6c4dd96609fe9face402474f40b Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 19 Sep 2015 12:22:42 +0000 Subject: [PATCH] Bug 57925: Add unit test and a simple fix to at least avoid the NPE when Workbooks have invalid external references git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1703999 13f79535-47bb-0310-9956-ffa450edef68 --- .../formula/OperationEvaluationContext.java | 6 +++++- .../apache/poi/hssf/usermodel/TestBugs.java | 18 ++++++++++++++++++ test-data/spreadsheet/57925.xls | Bin 0 -> 69120 bytes 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 test-data/spreadsheet/57925.xls diff --git a/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java b/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java index ce918926ca..cc590772de 100644 --- a/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java +++ b/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java @@ -94,7 +94,11 @@ public final class OperationEvaluationContext { if (externalSheet == null || externalSheet.getWorkbookName() == null) { // sheet is in same workbook targetEvaluator = _bookEvaluator; - otherFirstSheetIndex = _workbook.getSheetIndex(externalSheet.getSheetName()); + if(externalSheet == null) { + otherFirstSheetIndex = 0; + } else { + otherFirstSheetIndex = _workbook.getSheetIndex(externalSheet.getSheetName()); + } if (externalSheet instanceof ExternalSheetRange) { String lastSheetName = ((ExternalSheetRange)externalSheet).getLastSheetName(); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index f472e3d1d4..92661f8aee 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -2846,4 +2846,22 @@ public final class TestBugs extends BaseTestBugzillaIssues { wb.close(); } + + @Test + public void test57925() throws IOException { + Workbook wb = HSSFTestDataSamples.openSampleWorkbook("57925.xls"); + + wb.getCreationHelper().createFormulaEvaluator().evaluateAll(); + + for(int i = 0;i < wb.getNumberOfSheets();i++) { + Sheet sheet = wb.getSheetAt(i); + for(Row row : sheet) { + for(Cell cell : row) { + new DataFormatter().formatCellValue(cell); + } + } + } + + wb.close(); + } } diff --git a/test-data/spreadsheet/57925.xls b/test-data/spreadsheet/57925.xls new file mode 100644 index 0000000000000000000000000000000000000000..ef13551ff474875b13b01771bd2ded8f1979b94e GIT binary patch literal 69120 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 KhsoIF|NjAVp3DOP literal 0 HcmV?d00001