Kaydet (Commit) 75c78969 authored tarafından Noel Power's avatar Noel Power

fix core dump setting preload value for some cell formula

this patch is a follow up to 6ea4e42e & 7fff9872

Change-Id: Ia286164c369526acb4dfe733b651e65a79d124d8
üst 8616f227
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "rangelst.hxx" #include "rangelst.hxx"
#include "autonamecache.hxx" #include "autonamecache.hxx"
#include "tokenuno.hxx"
namespace oox { namespace oox {
namespace xls { namespace xls {
...@@ -134,22 +135,25 @@ void FormulaBuffer::finalizeImport() ...@@ -134,22 +135,25 @@ void FormulaBuffer::finalizeImport()
void FormulaBuffer::applyCellFormulas( std::vector< TokenAddressItem >& rVector ) void FormulaBuffer::applyCellFormulas( std::vector< TokenAddressItem >& rVector )
{ {
ScDocument& rDoc = getScDocument();
for ( std::vector< TokenAddressItem >::iterator it = rVector.begin(), it_end = rVector.end(); it != it_end; ++it ) for ( std::vector< TokenAddressItem >::iterator it = rVector.begin(), it_end = rVector.end(); it != it_end; ++it )
{ {
::com::sun::star::table::CellAddress& rAddress = it->maCellAddress; ::com::sun::star::table::CellAddress& rAddress = it->maCellAddress;
ApiTokenSequence rTokens = getFormulaParser().importFormula( rAddress, it->maTokenStr ); ApiTokenSequence rTokens = getFormulaParser().importFormula( rAddress, it->maTokenStr );
ScTokenArray aTokenArray;
Reference< XFormulaTokens > xTokens( getCell( rAddress ), UNO_QUERY ); ScAddress aCellPos;
OSL_ENSURE( xTokens.is(), "WorksheetHelper::putFormulaTokens - missing token interface" ); ScUnoConversion::FillScAddress( aCellPos, rAddress );
if( xTokens.is() ) xTokens->setTokens( rTokens ); ScTokenConversion::ConvertToTokenArray( rDoc, aTokenArray, rTokens );
ScBaseCell* pNewCell = new ScFormulaCell( &rDoc, aCellPos, &aTokenArray );
rDoc.PutCell( aCellPos, pNewCell, sal_True );
} }
} }
void FormulaBuffer::applyCellFormulaValues( std::vector< ValueAddressPair >& rVector ) void FormulaBuffer::applyCellFormulaValues( std::vector< ValueAddressPair >& rVector )
{ {
ScDocument& rDoc = getScDocument();
for ( std::vector< ValueAddressPair >::iterator it = rVector.begin(), it_end = rVector.end(); it != it_end; ++it ) for ( std::vector< ValueAddressPair >::iterator it = rVector.begin(), it_end = rVector.end(); it != it_end; ++it )
{ {
ScDocument& rDoc = getScDocument();
ScAddress aCellPos; ScAddress aCellPos;
ScUnoConversion::FillScAddress( aCellPos, it->first ); ScUnoConversion::FillScAddress( aCellPos, it->first );
ScBaseCell* pBaseCell = rDoc.GetCell( aCellPos ); ScBaseCell* pBaseCell = rDoc.GetCell( aCellPos );
......
...@@ -190,7 +190,6 @@ void SheetDataContext::onEndElement() ...@@ -190,7 +190,6 @@ void SheetDataContext::onEndElement()
{ {
if( mbValidRange && maFmlaData.isValidSharedRef( maCellData.maCellAddr ) ) if( mbValidRange && maFmlaData.isValidSharedRef( maCellData.maCellAddr ) )
{ {
//mrSheetData.createSharedFormula( maFmlaData.mnSharedId, mrFormulaParser.importFormula( maCellData.maCellAddr, maFormulaStr ) );
createSharedFormulaMapEntry( maCellData.maCellAddr, maFmlaData.mnSharedId, maFormulaStr ); createSharedFormulaMapEntry( maCellData.maCellAddr, maFmlaData.mnSharedId, maFormulaStr );
} }
setCellFormula( maCellData.maCellAddr, maFmlaData.mnSharedId ); setCellFormula( maCellData.maCellAddr, maFmlaData.mnSharedId );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment