--- ../../poi-3.2-FINAL.orig/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java 2008-10-11 11:59:18.000000000 +0200 +++ ../../poi-3.2-FINAL.orig/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java 2009-01-29 17:27:45.000000000 +0100 @@ -517,6 +517,15 @@ // Add in the new image lst[lst.length - 1] = img; _pictures = lst; + + if( lst.length > 1 ) { + PictureData prev = lst[lst.length - 2]; + int offset = prev.getOffset() + prev.getRawData().length + 8; + lst[lst.length - 1].setOffset( offset ); + } + else { + lst[lst.length - 1].setOffset( 0 ); + } } /* ******************* fetching methods follow ********************* */ --- ../../poi-3.2-FINAL.orig/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java 2008-10-11 11:59:08.000000000 +0200 +++ ../../poi-3.2-FINAL.orig/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java 2009-01-29 17:30:58.000000000 +0100 @@ -730,7 +730,7 @@ PictureData pict = PictureData.create(format); pict.setData(data); - pict.setOffset(offset); + _hslfSlideShow.addPicture(pict); EscherBSERecord bse = new EscherBSERecord(); bse.setRecordId(EscherBSERecord.RECORD_ID); @@ -746,14 +746,14 @@ else if (format == Picture.PICT) bse.setBlipTypeWin32((byte)Picture.WMF); bse.setRef(0); - bse.setOffset(offset); + bse.setOffset(pict.getOffset()); + bse.setRemainingData( new byte[0] ); bstore.addChildRecord(bse); + int count = bstore.getChildRecords().size(); bstore.setOptions((short)( (count << 4) | 0xF )); - _hslfSlideShow.addPicture(pict); - return count; }