]> source.dussan.org Git - poi.git/commitdiff
fixed XSSFSheet autoSizeColumn() to tolerate empty RichTextString, see Bugzilla 48332
authorYegor Kozlov <yegor@apache.org>
Fri, 4 Dec 2009 11:24:02 +0000 (11:24 +0000)
committerYegor Kozlov <yegor@apache.org>
Fri, 4 Dec 2009 11:24:02 +0000 (11:24 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@887160 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/status.xml
src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/ColumnHelper.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java

index 8229f2a3bce486ac88569c028433ddc85c0e500a..c949c66e96f3107fd059cec607c1850cb779a387 100644 (file)
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.6-beta1" date="2009-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">48332 - fixed XSSFSheet autoSizeColumn() to tolerate empty RichTextString</action>
            <action dev="POI-DEVELOPERS" type="fix">48332 - fixed ColumnInfoRecord to tolerate missing reserved field</action>
            <action dev="POI-DEVELOPERS" type="fix">47701 - fixed RecordFormatException when reading list subrecords (LbsDataSubRecord)</action>
            <action dev="POI-DEVELOPERS" type="add"> memory usage optimization in XSSF - avoid creating parentless xml beans</action>
index 8359ab818d06c9656059571345f79b4bc99061bc..cad16aeebae626f1992e507fe688e376424af921 100644 (file)
@@ -366,8 +366,10 @@ public class ColumnHelper {
                             XSSFFont fnt = rt.getFontOfFormattingRun(j);
                             if (fnt != null) {
                                 int len = rt.getLengthOfFormattingRun(j);
-                                copyAttributes(fnt, str, pos, pos + len);
-                                pos += len;
+                                if(len > 0) { //ignore degenerate zero-length runs
+                                    copyAttributes(fnt, str, pos, pos + len);
+                                    pos += len;
+                                }
                             }
                         }
                     }
index ff7764c82e9084f8dee27bfd1e93f81edc9a7379..b66d85e2a82f24e51d42d592925c2f980b41c639 100644 (file)
@@ -17,9 +17,7 @@
 
 package org.apache.poi.xssf.usermodel;
 
-import org.apache.poi.ss.usermodel.BaseTestSheet;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.XSSFITestDataProvider;
 import org.apache.poi.xssf.XSSFTestDataSamples;
@@ -158,6 +156,24 @@ public class TestXSSFSheet extends BaseTestSheet {
         assertTrue(col.getBestFit());
     }
 
+    /**
+     * XSSFSheet autoSizeColumn() on empty RichTextString fails
+     */
+    public void test48325() {
+        XSSFWorkbook wb = new XSSFWorkbook();
+        XSSFSheet sheet = wb.createSheet("Test");
+        CreationHelper factory = wb.getCreationHelper();
+
+        XSSFRow row = sheet.createRow(0);
+        XSSFCell cell = row.createCell(0);
+
+        XSSFFont font = wb.createFont();
+        RichTextString rts = factory.createRichTextString("");
+        rts.applyFont(font);
+        cell.setCellValue(rts);
+
+        sheet.autoSizeColumn(0);
+    }
 
     public void testGetCellComment() {
         XSSFWorkbook workbook = new XSSFWorkbook();