diff options
author | Caolán McNamara <caolanm@redhat.com> | 2012-08-09 09:59:38 +0100 |
---|---|---|
committer | Petr Mladek <pmladek@suse.cz> | 2012-08-15 17:23:56 +0200 |
commit | 37fbcf33bd9d4fc538a1a3bb606845455f7c2d04 (patch) | |
tree | ea17b0f6ea36971f6627ed988f33196ec3d17f83 | |
parent | 4d6c1c5b8900dd3b2be9cdfc401f222f0de38bda (diff) |
ensure placeholder substitution on XclImpDrawObjBase::ReadObj8 failure
Change-Id: I7a72153d971aaccea937955acc77cdba128985d7
Signed-off-by: Michael Stahl <mstahl@redhat.com>
Signed-off-by: Stephan Bergmann <sbergman@redhat.com>
Signed-off-by: Petr Mladek <pmladek@suse.cz>
-rw-r--r-- | sc/source/filter/excel/xiescher.cxx | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sc/source/filter/excel/xiescher.cxx b/sc/source/filter/excel/xiescher.cxx index 74ed03b8d6e9..900d2e6f86d2 100644 --- a/sc/source/filter/excel/xiescher.cxx +++ b/sc/source/filter/excel/xiescher.cxx @@ -336,7 +336,7 @@ XclImpDrawObjRef XclImpDrawObjBase::ReadObj8( const XclImpRoot& rRoot, XclImpStr if( rStrm.GetRecLeft() >= 10 ) { - sal_uInt16 nSubRecId, nSubRecSize, nObjType; + sal_uInt16 nSubRecId(0), nSubRecSize(0), nObjType(0); rStrm >> nSubRecId >> nSubRecSize >> nObjType; OSL_ENSURE( nSubRecId == EXC_ID_OBJCMO, "XclImpDrawObjBase::ReadObj8 - OBJCMO subrecord expected" ); if( (nSubRecId == EXC_ID_OBJCMO) && (nSubRecSize >= 6) ) @@ -379,11 +379,16 @@ XclImpDrawObjRef XclImpDrawObjBase::ReadObj8( const XclImpRoot& rRoot, XclImpStr default: OSL_TRACE( "XclImpDrawObjBase::ReadObj8 - unknown object type 0x%04hX", nObjType ); rRoot.GetTracer().TraceUnsupportedObjects(); - xDrawObj.reset( new XclImpPhObj( rRoot ) ); } } } + if (!xDrawObj) //ensure placeholder for unknown or broken records + { + SAL_WARN( "sc", "XclImpDrawObjBase::ReadObj8 import failed, substituting placeholder"); + xDrawObj.reset( new XclImpPhObj( rRoot ) ); + } + xDrawObj->mnTab = rRoot.GetCurrScTab(); xDrawObj->ImplReadObj8( rStrm ); return xDrawObj; |