You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2023/05/14 07:47:16 UTC

svn commit: r1909808 - in /poi/trunk/poi-ooxml/src: main/java/org/apache/poi/xssf/usermodel/XSSFRow.java test/java/org/apache/poi/xssf/usermodel/TestXSSFRow.java

Author: centic
Date: Sun May 14 07:47:16 2023
New Revision: 1909808

URL: http://svn.apache.org/viewvc?rev=1909808&view=rev
Log:
Bug 66598: Fix invalid loop-condition when cleaning up CTCells

Modified:
    poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFRow.java
    poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFRow.java

Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFRow.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFRow.java?rev=1909808&r1=1909807&r2=1909808&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFRow.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFRow.java Sun May 14 07:47:16 2023
@@ -608,7 +608,7 @@ public class XSSFRow implements Row, Com
         }
 
         // remove any remaining illegal references in _rows.cArray
-        while(cArrayOrig.length > _cells.size()) {
+        while(_row.getCArray().length > _cells.size()) {
             _row.removeC(_cells.size());
         }
     }

Modified: poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFRow.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFRow.java?rev=1909808&r1=1909807&r2=1909808&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFRow.java (original)
+++ poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFRow.java Sun May 14 07:47:16 2023
@@ -21,12 +21,22 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertSame;
 
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.OutputStream;
 
 import org.apache.poi.common.usermodel.HyperlinkType;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.tests.usermodel.BaseTestXRow;
-import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellCopyContext;
+import org.apache.poi.ss.usermodel.CellCopyPolicy;
+import org.apache.poi.ss.usermodel.CellType;
+import org.apache.poi.ss.usermodel.Hyperlink;
+import org.apache.poi.ss.usermodel.RichTextString;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.XSSFITestDataProvider;
 import org.apache.poi.xssf.XSSFTestDataSamples;
 import org.junit.jupiter.api.Test;
@@ -426,4 +436,44 @@ public final class TestXSSFRow extends B
         XSSFWorkbook wb3 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
         assertEquals(CellType.BLANK, wb3.getSheet("Sheet1").getRow(0).getCell(1).getCellType(), "Cell should be blank");
     }
+
+    @Test
+    void createHeaderOnce() throws IOException {
+        Workbook wb = new XSSFWorkbook();
+        fillData(1, wb.createSheet("sheet123"));
+        writeToFile(wb);
+    }
+
+    @Test
+    void createHeaderTwice() throws IOException {
+        Workbook wb = new XSSFWorkbook();
+        fillData(0, wb.createSheet("sheet123"));
+        writeToFile(wb);
+    }
+
+    @Test
+    void createHeaderThreeTimes() throws IOException {
+        Workbook wb = new XSSFWorkbook();
+        Sheet sheet = wb.createSheet("sheet123");
+        fillData(1, sheet);
+        fillData(0, sheet);
+        fillData(0, sheet);
+        writeToFile(wb);
+    }
+
+    private void fillData(int startAtRow, Sheet sheet) {
+        Row header = sheet.createRow(0);
+        for (int rownum = startAtRow; rownum < 2; rownum++) {
+            header.createCell(0).setCellValue("a");
+
+            Row row = sheet.createRow(rownum);
+            row.createCell(0).setCellValue("a");
+        }
+    }
+
+    private void writeToFile(Workbook wb) throws IOException {
+        try (OutputStream fileOut = new ByteArrayOutputStream()) {
+            wb.write(fileOut);
+        }
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org