summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-08-12 14:00:03 -0400
committerKohei Yoshida <kohei.yoshida@collabora.com>2014-08-12 14:16:56 -0400
commit95f0811c093680e6258f3bc973a3f7a3731a28f4 (patch)
treeb51177095ac593daee62d1d7d34e71c4a1f333b9
parent5fe1a59cb7408e9f6ce0e554f01c89fc44ab3041 (diff)
Revert "Resolves: #i125187# more precision where the BLIP graphic is located"
This reverts commit 3ea17073114cae99d7c323f051a4a2ba074f043c. That change from AOO single-handedly broke all image import from xls binary files. Change-Id: I384ae8f286ccc9d39e64de9da5ef6458af0a0972
-rw-r--r--filter/source/msfilter/msdffimp.cxx37
1 files changed, 8 insertions, 29 deletions
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index d3ba8ca16ceb..2bf8a09f9776 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -5823,46 +5823,25 @@ void SvxMSDffManager::GetDrawingGroupContainerData( SvStream& rSt, sal_uLong nLe
nLenFBSE = nLength;
// is FBSE big enough for our data
bool bOk = ( nSkipBLIPLen + 4 + nSkipBLIPPos + 4 <= nLenFBSE );
- bool bBLIPIsDirectlyEmbedded(false);
- if(bOk)
+ if( bOk )
{
- rSt.SeekRel(nSkipBLIPLen);
+ rSt.SeekRel( nSkipBLIPLen );
rSt.ReadUInt32( nBLIPLen );
-
- // #i125187# do not simply skip these four bytes, but read them. This value
- // is zero when the BLIP is embedded to the FBSE directly following in the
- // stream, else 1. Use this as hint to be more reliable (see below)
- rSt.ReadUInt32( nBLIPPos );
-
- if (0 == nBLIPPos)
- {
- bBLIPIsDirectlyEmbedded = true;
- }
-
+ rSt.SeekRel( nSkipBLIPPos );
rSt.ReadUInt32( nBLIPPos );
bOk = rSt.GetError() == 0;
- nLength -= nSkipBLIPLen + 4 + nSkipBLIPPos + 4;
+ nLength -= nSkipBLIPLen+ 4 + nSkipBLIPPos + 4;
}
if( bOk )
{
- // #i125187# the original check to test if the BLIP is following embeded in the FBSE was
- // was (!nBLIPPos && nBLIPLen < nLenFBSE), but there are ppt documents
- // where this is not sufficient (what means that for BLIPs in the picture
- // stream the same conditions can be true sometimes). I experimented with various
- // ppt files and detected that the four bytes before reading the nBLIPPos
- // contain a flag which describes that embedding more reliable, thus I will
- // use it here now in the form of the bBLIPIsDirectlyEmbedded variable (see above).
- // This modification works with all ppt files I found which use directly embedded
- // BLIPs and with the file which showed the error. More work may be needed when
- // exceptions to this more strict schema may show up, though.
- if (0 == nBLIPPos && nBLIPLen < nLenFBSE && bBLIPIsDirectlyEmbedded)
- {
- // get BLIP file position as directly following embedded
+ // specialty:
+ // If nBLIPLen is less than nLenFBSE AND nBLIPPos is NULL,
+ // then we assume, that the image is in FBSE!
+ if( (!nBLIPPos) && (nBLIPLen < nLenFBSE) )
nBLIPPos = rSt.Tell() + 4;
- }
// That worked great!
// We store, that we do have one FBSE more in the pointer array.