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]

Reply via email to