Author: fanningpj
Date: Fri May 17 10:00:28 2024
New Revision: 1917779
URL: http://svn.apache.org/viewvc?rev=1917779&view=rev
Log:
[bug-69021] add guard around cast
Added:
poi/trunk/test-data/spreadsheet/bug69021.xls (with props)
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/model/InternalWorkbook.java
poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFSheetShiftRows.java
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/hssf/model/InternalWorkbook.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/hssf/model/InternalWorkbook.java?rev=1917779&r1=1917778&r2=1917779&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/hssf/model/InternalWorkbook.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/hssf/model/InternalWorkbook.java
Fri May 17 10:00:28 2024
@@ -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();
+ }
}
}
}
Modified:
poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFSheetShiftRows.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFSheetShiftRows.java?rev=1917779&r1=1917778&r2=1917779&view=diff
==============================================================================
---
poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFSheetShiftRows.java
(original)
+++
poi/trunk/poi/src/test/java/org/apache/poi/hssf/usermodel/TestHSSFSheetShiftRows.java
Fri May 17 10:00:28 2024
@@ -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);
+ }
+ }
}
Added: poi/trunk/test-data/spreadsheet/bug69021.xls
URL:
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/bug69021.xls?rev=1917779&view=auto
==============================================================================
Binary file - no diff available.
Propchange: poi/trunk/test-data/spreadsheet/bug69021.xls
------------------------------------------------------------------------------
svn:mime-type = application/vnd.ms-excel
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]