Browse Source

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
tags/REL_3_12_FINAL
Dominik Stadler 9 years ago
parent
commit
2c7987545b

+ 6
- 5
src/java/org/apache/poi/hssf/model/InternalWorkbook.java View File

@@ -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);
}
}
}


+ 10
- 0
src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java View File

@@ -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();
}
}

BIN
test-data/spreadsheet/57163.xls View File


Loading…
Cancel
Save