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 2016/04/03 20:32:22 UTC

svn commit: r1737602 - in /poi/trunk: src/java/org/apache/poi/hssf/model/InternalWorkbook.java src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java test-data/spreadsheet/55982.xls

Author: centic
Date: Sun Apr  3 18:32:22 2016
New Revision: 1737602

URL: http://svn.apache.org/viewvc?rev=1737602&view=rev
Log:
Bug 55982: Don't fail to open the spreadsheet if no TabIdRecord is found

Added:
    poi/trunk/test-data/spreadsheet/55982.xls
Modified:
    poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java

Modified: poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java?rev=1737602&r1=1737601&r2=1737602&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java Sun Apr  3 18:32:22 2016
@@ -801,20 +801,24 @@ public final class InternalWorkbook {
 
     /**
      * make the tabid record look like the current situation.
-     *
-     * @return number of bytes written in the TabIdRecord
      */
-    private int fixTabIdRecord() {
-        TabIdRecord tir = ( TabIdRecord ) records.get(records.getTabpos());
-        int sz = tir.getRecordSize();
+    private void fixTabIdRecord() {
+        Record rec = records.get(records.getTabpos());
+
+        // see bug 55982, quite a number of documents do not have a TabIdRecord and
+        // thus there is no way to do the fixup here,
+        // we use the same check on Tabpos as done in other places
+        if(records.getTabpos() <= 0) {
+            return;
+        }
+
+        TabIdRecord tir = ( TabIdRecord ) rec;
         short[]     tia = new short[ boundsheets.size() ];
 
         for (short k = 0; k < tia.length; k++) {
             tia[ k ] = k;
         }
         tir.setTabIdArray(tia);
-        return tir.getRecordSize() - sz;
-
     }
 
     /**

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java?rev=1737602&r1=1737601&r2=1737602&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java Sun Apr  3 18:32:22 2016
@@ -3001,4 +3001,12 @@ public final class TestBugs extends Base
 
         wb.close();
     }
+
+    @Test
+    public void test55982() throws IOException {
+        Workbook wb = HSSFTestDataSamples.openSampleWorkbook("55982.xls");
+        Sheet newSheet = wb.cloneSheet(1);
+        assertNotNull(newSheet);
+        wb.close();
+    }
 }

Added: poi/trunk/test-data/spreadsheet/55982.xls
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/55982.xls?rev=1737602&view=auto
==============================================================================
Binary files poi/trunk/test-data/spreadsheet/55982.xls (added) and poi/trunk/test-data/spreadsheet/55982.xls Sun Apr  3 18:32:22 2016 differ



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