DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=43877>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=43877





------- Additional Comments From [EMAIL PROTECTED]  2007-11-21 02:44 -------
Daniel,

1. After I applied the fix for EmbeddedObjectRefSubRecord the test for 1
checkbox passes. That is if I create 
a xls with 1 checkbox ans re-save it by POI the xls is still valid.
Patch applied, thanks.

2. The problem may also be related to EscherMetafileBlip.
An attempt to view the binary structure of attached saved.xls using BiffViewer
results in ArrayIndexOutOfBoundsException:

java.lang.ArrayIndexOutOfBoundsException
        at java.lang.System.arraycopy(Native Method)
        at
org.apache.poi.ddf.EscherMetafileBlip.fillFields(EscherMetafileBlip.java:87)
        at 
org.apache.poi.ddf.EscherBSERecord.fillFields(EscherBSERecord.java:94)
        at
org.apache.poi.ddf.EscherContainerRecord.fillFields(EscherContainerRecord.java:56)
        at
org.apache.poi.ddf.EscherContainerRecord.fillFields(EscherContainerRecord.java:56)
        at
org.apache.poi.hssf.record.AbstractEscherHolderRecord.convertToEscherRecords(AbstractEscherHolderRecord.java:104)
        at
org.apache.poi.hssf.record.AbstractEscherHolderRecord.fillFields(AbstractEscherHolderRecord.java:93)
        at org.apache.poi.hssf.record.Record.<init>(Record.java:53)
        at
org.apache.poi.hssf.record.AbstractEscherHolderRecord.<init>(AbstractEscherHolderRecord.java:66)
        at
org.apache.poi.hssf.record.DrawingGroupRecord.<init>(DrawingGroupRecord.java:42)
        at org.apache.poi.hssf.dev.BiffViewer.createRecord(BiffViewer.java:282)
        

Although BiffViewer is happy with the original has58controls.xls. I can dump and
see its structure


I look at the code and it seems I see a bug:

    public int serialize( int offset, byte[] data, EscherSerializationListener
listener )
    {
        listener.beforeRecordSerialize(offset, getRecordId(), this);

        int pos = offset;
        LittleEndian.putShort( data, pos, getOptions() ); pos += 2;
        LittleEndian.putShort( data, pos, getRecordId() ); pos += 2;
!bug    LittleEndian.putInt( data, getRecordSize() - HEADER_SIZE ); pos += 4;

it writes the record size at a wrong position. Should be
       LittleEndian.putInt( data, pos, getRecordSize() - HEADER_SIZE ); pos += 
4;

Please confirm.


Yegor

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to