diff options
author | Nick Burch <nick@apache.org> | 2011-03-18 14:30:47 +0000 |
---|---|---|
committer | Nick Burch <nick@apache.org> | 2011-03-18 14:30:47 +0000 |
commit | 0055c90bc4c90d223bcf95c0ad455db0de358b89 (patch) | |
tree | a03b93bac4bed7b17159c9a4d4a327ac1c44a1e8 /src/java/org/apache | |
parent | d82c5b6336ff827147701aa0674bcce2830cc1d6 (diff) | |
download | poi-0055c90bc4c90d223bcf95c0ad455db0de358b89.tar.gz poi-0055c90bc4c90d223bcf95c0ad455db0de358b89.zip |
Fix bug #50939 - ChartEndObjectRecord is supposed to have 6 bytes at the end, but handle it not
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1082936 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache')
-rw-r--r-- | src/java/org/apache/poi/hssf/record/chart/ChartEndObjectRecord.java | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/java/org/apache/poi/hssf/record/chart/ChartEndObjectRecord.java b/src/java/org/apache/poi/hssf/record/chart/ChartEndObjectRecord.java index 1452449600..3e9a86af28 100644 --- a/src/java/org/apache/poi/hssf/record/chart/ChartEndObjectRecord.java +++ b/src/java/org/apache/poi/hssf/record/chart/ChartEndObjectRecord.java @@ -33,15 +33,23 @@ public final class ChartEndObjectRecord extends StandardRecord { private short rt; private short grbitFrt; private short iObjectKind; - private byte[] unused; + private byte[] reserved; public ChartEndObjectRecord(RecordInputStream in) { rt = in.readShort(); grbitFrt = in.readShort(); iObjectKind = in.readShort(); - unused = new byte[6]; - in.readFully(unused); + // The spec says that there should be 6 bytes at the + // end, which must be there and must be zero + // However, sometimes Excel forgets them... + reserved = new byte[6]; + if(in.available() == 0) { + // They've gone missing... + } else { + // Read the reserved bytes + in.readFully(reserved); + } } @Override @@ -60,7 +68,7 @@ public final class ChartEndObjectRecord extends StandardRecord { out.writeShort(grbitFrt); out.writeShort(iObjectKind); // 6 bytes unused - out.write(unused); + out.write(reserved); } @Override @@ -71,7 +79,7 @@ public final class ChartEndObjectRecord extends StandardRecord { buffer.append(" .rt =").append(HexDump.shortToHex(rt)).append('\n'); buffer.append(" .grbitFrt =").append(HexDump.shortToHex(grbitFrt)).append('\n'); buffer.append(" .iObjectKind=").append(HexDump.shortToHex(iObjectKind)).append('\n'); - buffer.append(" .unused =").append(HexDump.toHex(unused)).append('\n'); + buffer.append(" .reserved =").append(HexDump.toHex(reserved)).append('\n'); buffer.append("[/ENDOBJECT]\n"); return buffer.toString(); } |