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]
