Author: alg Date: Fri Jan 17 22:32:30 2014 New Revision: 1559272 URL: http://svn.apache.org/r1559272 Log: i123870 corrected import values on xml import with chart, avoid uninitialized values
Modified: openoffice/trunk/main/sc/inc/document.hxx openoffice/trunk/main/sc/inc/refdata.hxx openoffice/trunk/main/sc/source/core/tool/reftokenhelper.cxx openoffice/trunk/main/sc/source/filter/excel/excform8.cxx Modified: openoffice/trunk/main/sc/inc/document.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sc/inc/document.hxx?rev=1559272&r1=1559271&r2=1559272&view=diff ============================================================================== --- openoffice/trunk/main/sc/inc/document.hxx (original) +++ openoffice/trunk/main/sc/inc/document.hxx Fri Jan 17 22:32:30 2014 @@ -465,7 +465,7 @@ public: public: SC_DLLPUBLIC ScDocument( ScDocumentMode eMode = SCDOCMODE_DOCUMENT, SfxObjectShell* pDocShell = NULL ); - SC_DLLPUBLIC ~ScDocument(); + SC_DLLPUBLIC virtual ~ScDocument(); inline ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > GetServiceManager() const { return xServiceManager; } Modified: openoffice/trunk/main/sc/inc/refdata.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sc/inc/refdata.hxx?rev=1559272&r1=1559271&r2=1559272&view=diff ============================================================================== --- openoffice/trunk/main/sc/inc/refdata.hxx (original) +++ openoffice/trunk/main/sc/inc/refdata.hxx Fri Jan 17 22:32:30 2014 @@ -76,6 +76,10 @@ struct SC_DLLPUBLIC ScSingleRefData // No default ctor, because used in ScRawToken union, set InitFlags! inline void InitFlags() { bFlags = 0; } // all FALSE + + // #123870# Make it possible to init members to some defined values + inline void InitMembers() { nCol = nRow = nTab = nRelCol = nRelRow = nRelTab = 0; } + // InitAddress: InitFlags and set address inline void InitAddress( const ScAddress& rAdr ); inline void InitAddress( SCCOL nCol, SCROW nRow, SCTAB nTab ); @@ -157,6 +161,14 @@ struct ScComplexRefData // Compl inline void InitFlags() { Ref1.InitFlags(); Ref2.InitFlags(); } + + // #123870# Make it possible to init members to some defined values + inline void InitMembers() + { + Ref1.InitMembers(); + Ref2.InitMembers(); + } + inline void InitRange( const ScRange& rRange ) { Ref1.InitAddress( rRange.aStart ); Modified: openoffice/trunk/main/sc/source/core/tool/reftokenhelper.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/core/tool/reftokenhelper.cxx?rev=1559272&r1=1559271&r2=1559272&view=diff ============================================================================== --- openoffice/trunk/main/sc/source/core/tool/reftokenhelper.cxx (original) +++ openoffice/trunk/main/sc/source/core/tool/reftokenhelper.cxx Fri Jan 17 22:32:30 2014 @@ -146,6 +146,12 @@ bool ScRefTokenHelper::getRangeFromToken return false; const ScSingleRefData& rRefData = pToken->GetSingleRef(); + + if(!rRefData.Valid()) + { + OSL_ENSURE(false, "RefData out of range, correct before usage (!)"); + } + rRange.aStart.SetCol(rRefData.nCol); rRange.aStart.SetRow(rRefData.nRow); rRange.aStart.SetTab(rRefData.nTab); @@ -160,6 +166,12 @@ bool ScRefTokenHelper::getRangeFromToken return false; const ScComplexRefData& rRefData = pToken->GetDoubleRef(); + + if(!rRefData.Valid()) + { + OSL_ENSURE(false, "RefData out of range, correct before usage (!)"); + } + rRange.aStart.SetCol(rRefData.Ref1.nCol); rRange.aStart.SetRow(rRefData.Ref1.nRow); rRange.aStart.SetTab(rRefData.Ref1.nTab); Modified: openoffice/trunk/main/sc/source/filter/excel/excform8.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/filter/excel/excform8.cxx?rev=1559272&r1=1559271&r2=1559272&view=diff ============================================================================== --- openoffice/trunk/main/sc/source/filter/excel/excform8.cxx (original) +++ openoffice/trunk/main/sc/source/filter/excel/excform8.cxx Fri Jan 17 22:32:30 2014 @@ -124,6 +124,10 @@ ConvErr ExcelToSc8::Convert( const ScTok sal_Size nEndPos = aIn.GetRecPos() + nFormulaLen; + // #123870# Init members, they are on random values and not all will beinitialized in all cases below + aSRD.InitMembers(); + aCRD.InitMembers(); + while( (aIn.GetRecPos() < nEndPos) && !bError ) { aIn >> nOp; @@ -1244,6 +1248,10 @@ ConvErr ExcelToSc8::ConvertExternName( c sal_Size nEndPos = rStrm.GetRecPos() + nFormulaLen; + // #123870# Init members, they are on random values and not all will beinitialized in all cases below + aSRD.InitMembers(); + aCRD.InitMembers(); + while( (rStrm.GetRecPos() < nEndPos) && !bError ) { rStrm >> nOp;