Skip to content

Commit

Permalink
[bug-69021] add guard around cast
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1917779 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
pjfanning committed May 17, 2024
1 parent 4830590 commit af5d4b9
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1071,13 +1071,16 @@ record = lSST.createExtSSTRecord(sstPos + offset);
*
* 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();
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,32 @@ Licensed to the Apache Software Foundation (ASF) under one or more
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 added test-data/spreadsheet/bug69021.xls
Binary file not shown.

0 comments on commit af5d4b9

Please sign in to comment.