fixed bug in EscherAggregate if sheet contains no shapes
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/gsoc2012@1351309 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3d077abe2c
commit
1b76a7e345
@ -491,7 +491,8 @@ public final class EscherAggregate extends AbstractEscherHolderRecord {
|
|||||||
// the first one because it's the patriach).
|
// the first one because it's the patriach).
|
||||||
pos = offset;
|
pos = offset;
|
||||||
int writtenEscherBytes = 0;
|
int writtenEscherBytes = 0;
|
||||||
for (int i = 1; i < shapes.size(); i++) {
|
int i;
|
||||||
|
for (i = 1; i < shapes.size(); i++) {
|
||||||
int endOffset = (Integer) spEndingOffsets.get(i) - 1;
|
int endOffset = (Integer) spEndingOffsets.get(i) - 1;
|
||||||
int startOffset;
|
int startOffset;
|
||||||
if (i == 1)
|
if (i == 1)
|
||||||
@ -515,10 +516,15 @@ public final class EscherAggregate extends AbstractEscherHolderRecord {
|
|||||||
pos += writeDataIntoDrawingRecord(0, drawingData, writtenEscherBytes, pos, data, i);
|
pos += writeDataIntoDrawingRecord(0, drawingData, writtenEscherBytes, pos, data, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ((pos - offset) < buffer.length-1){
|
||||||
|
byte[] drawingData = new byte[buffer.length - (pos - offset)];
|
||||||
|
System.arraycopy(buffer, (pos - offset), drawingData, 0, drawingData.length);
|
||||||
|
pos += writeDataIntoDrawingRecord(0, drawingData, writtenEscherBytes, pos, data, i);
|
||||||
|
}
|
||||||
|
|
||||||
// write records that need to be serialized after all drawing group records
|
// write records that need to be serialized after all drawing group records
|
||||||
for (int i = 0; i < tailRec.size(); i++) {
|
for (i = 0; i < tailRec.size(); i++) {
|
||||||
Record rec = (Record) tailRec.get(i);
|
Record rec = tailRec.get(i);
|
||||||
pos += rec.serialize(pos, data);
|
pos += rec.serialize(pos, data);
|
||||||
}
|
}
|
||||||
int bytesWritten = pos - offset;
|
int bytesWritten = pos - offset;
|
||||||
@ -599,6 +605,9 @@ public final class EscherAggregate extends AbstractEscherHolderRecord {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int drawingRecordSize = rawEscherSize + (shapeToObj.size()) * 4;
|
int drawingRecordSize = rawEscherSize + (shapeToObj.size()) * 4;
|
||||||
|
if (rawEscherSize != 0 && spEndingOffsets.size()==1/**EMPTY**/){
|
||||||
|
continueRecordsHeadersSize +=4;
|
||||||
|
}
|
||||||
int objRecordSize = 0;
|
int objRecordSize = 0;
|
||||||
for (Iterator iterator = shapeToObj.values().iterator(); iterator.hasNext(); ) {
|
for (Iterator iterator = shapeToObj.values().iterator(); iterator.hasNext(); ) {
|
||||||
Record r = (Record) iterator.next();
|
Record r = (Record) iterator.next();
|
||||||
|
Loading…
Reference in New Issue
Block a user