]> source.dussan.org Git - poi.git/commitdiff
Fix bug #49219 - ExternalNameRecord can have a DDE Link entry without an operation
authorNick Burch <nick@apache.org>
Fri, 18 Mar 2011 15:51:39 +0000 (15:51 +0000)
committerNick Burch <nick@apache.org>
Fri, 18 Mar 2011 15:51:39 +0000 (15:51 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1082958 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/status.xml
src/java/org/apache/poi/hssf/record/ExternalNameRecord.java
src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
test-data/spreadsheet/49219.xls [new file with mode: 0644]

index e2e772a3c2440f41feb95b88da19f24da877a820..3ee716b13532f3ba57ebc415599287b7e11fc56b 100644 (file)
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.8-beta2" date="2011-??-??">
+           <action dev="poi-developers" type="fix">49219 - ExternalNameRecord support for DDE Link entries without an operation</action>
            <action dev="poi-developers" type="fix">50846 - More XSSFColor theme improvements, this time for Cell Borders</action>
            <action dev="poi-developers" type="fix">50939 - ChartEndObjectRecord is supposed to have 6 bytes at the end, but handle it not</action>
            <action dev="poi-developers" type="add">HMEF - New component which supports TNEF (Transport Neutral Encoding Format), aka winmail.dat</action>
index cb1c5ac25b99300d9e744c78034aa4730e2251cf..934cf431d4e1ce586f6f1d085d8999f815e99fb6 100644 (file)
@@ -176,14 +176,16 @@ public final class ExternalNameRecord extends StandardRecord {
             // another switch: the fWantAdvise bit specifies whether the body describes
             // an external defined name or a DDE data item
             if(isAutomaticLink()){
-                //body specifies DDE data item
-                int nColumns = in.readUByte() + 1;
-                int nRows = in.readShort() + 1;
-
-                int totalCount = nRows * nColumns;
-                _ddeValues = ConstantValueParser.parse(in, totalCount);
-                _nColumns = nColumns;
-                _nRows = nRows;
+                if(in.available() > 0) {
+                   //body specifies DDE data item
+                   int nColumns = in.readUByte() + 1;
+                   int nRows = in.readShort() + 1;
+   
+                   int totalCount = nRows * nColumns;
+                   _ddeValues = ConstantValueParser.parse(in, totalCount);
+                   _nColumns = nColumns;
+                   _nRows = nRows;
+                }
             } else {
                 //body specifies an external defined name
                 int formulaLen = in.readUShort();
index e27ce841aba57eba666e445ee0ba00cff0781767..590d096e113640ed608eaa30e41834632866b36e 100644 (file)
@@ -2036,4 +2036,10 @@ if(1==2) {
        HSSFWorkbook wb = openSample("50939.xls");
        assertEquals(2, wb.getNumberOfSheets());
     }
+    
+    public void test49219() throws Exception {
+       HSSFWorkbook wb = openSample("49219.xls");
+       assertEquals(1, wb.getNumberOfSheets());
+       assertEquals("DGATE", wb.getSheetAt(0).getRow(1).getCell(0).getStringCellValue());
+    }
 }
diff --git a/test-data/spreadsheet/49219.xls b/test-data/spreadsheet/49219.xls
new file mode 100644 (file)
index 0000000..68605ea
Binary files /dev/null and b/test-data/spreadsheet/49219.xls differ