From: Dominik Stadler Date: Mon, 13 Apr 2015 12:19:11 +0000 (+0000) Subject: Bug 57163: Fix possible NullPointerException when a spreadsheet has no LinkTable... X-Git-Tag: REL_3_12_FINAL~57 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2c7987545b7f9bc6cab84a9c812c512092ad7fc9;p=poi.git Bug 57163: Fix possible NullPointerException when a spreadsheet has no LinkTable and we try to adjust it during sheet removal. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1673168 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/poi/hssf/model/InternalWorkbook.java b/src/java/org/apache/poi/hssf/model/InternalWorkbook.java index 3c3b91b148..a2670978ea 100644 --- a/src/java/org/apache/poi/hssf/model/InternalWorkbook.java +++ b/src/java/org/apache/poi/hssf/model/InternalWorkbook.java @@ -774,11 +774,12 @@ public final class InternalWorkbook { } } - // also tell the LinkTable about the removed sheet - // +1 because we already removed it from the count of sheets! - for(int i = sheetIndex+1;i < getNumSheets()+1;i++) { - // also update the link-table as otherwise references might point at invalid sheets - linkTable.removeSheet(i); + if (linkTable != null) { + // also tell the LinkTable about the removed sheet + // +1 because we already removed it from the count of sheets! + for(int i = sheetIndex+1;i < getNumSheets()+1;i++) { + linkTable.removeSheet(i); + } } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 73256b6897..0bb1de24b4 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -2716,4 +2716,14 @@ public final class TestBugs extends BaseTestBugzillaIssues { Workbook wb = openSample("57456.xls"); wb.close(); } + + @Test + public void test57163() throws IOException { + Workbook wb = openSample("57163.xls"); + + while (wb.getNumberOfSheets() > 1) { + wb.removeSheetAt(1); + } + wb.close(); + } } diff --git a/test-data/spreadsheet/57163.xls b/test-data/spreadsheet/57163.xls new file mode 100644 index 0000000000..402c954e19 Binary files /dev/null and b/test-data/spreadsheet/57163.xls differ