[bug-69021] add guard around cast

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1917779 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
PJ Fanning 2024-05-17 10:00:28 +00:00
parent 48305903b3
commit af5d4b9f22
3 changed files with 29 additions and 5 deletions

View File

@ -1071,13 +1071,16 @@ public final class InternalWorkbook {
*
* Include in it ant code that modifies the workbook record stream and affects its size.
*/
public void preSerialize(){
public void preSerialize() {
// Ensure we have enough tab IDs
// Can be a few short if new sheets were added
if(records.getTabpos() > 0) {
TabIdRecord tir = ( TabIdRecord ) records.get(records.getTabpos());
if(tir.getTabIdSize() < boundsheets.size()) {
fixTabIdRecord();
if (records.getTabpos() > 0) {
Record rec = records.get(records.getTabpos());
if (rec instanceof TabIdRecord) {
TabIdRecord tir = ( TabIdRecord ) rec;
if(tir.getTabIdSize() < boundsheets.size()) {
fixTabIdRecord();
}
}
}
}

View File

@ -18,11 +18,32 @@
package org.apache.poi.hssf.usermodel;
import org.apache.poi.hssf.HSSFITestDataProvider;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.ss.usermodel.BaseTestSheetShiftRows;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import static org.junit.jupiter.api.Assertions.assertNotNull;
final class TestHSSFSheetShiftRows extends BaseTestSheetShiftRows {
public TestHSSFSheetShiftRows() {
super(HSSFITestDataProvider.instance);
}
@Test
public void testBug69021() throws IOException {
try (HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook("bug69021.xls")) {
Sheet sheet = workbook.getSheetAt(0);
int rowIndex = 2;
sheet.shiftRows(rowIndex, sheet.getLastRowNum(), 1);
Row row = sheet.createRow(rowIndex);
row.createCell(0).setCellValue("switch");
HSSFWorkbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(workbook);
assertNotNull(wbBack);
}
}
}

Binary file not shown.