[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - 2 commits - sc/source
Markus Mohrhard
markus.mohrhard at collabora.co.uk
Sat Nov 29 16:13:56 PST 2014
sc/source/core/data/document10.cxx | 7 +++++--
sc/source/filter/excel/xecontent.cxx | 22 ++++++++++++++--------
2 files changed, 19 insertions(+), 10 deletions(-)
New commits:
commit e4a9632f383fe731c4d721aeabe779efd830105c
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sat Nov 29 18:22:38 2014 +0100
don't call XLSX methods in XLS export, related fdo#59762
This should fix a huge number of our xls export crashes. I just picked
my test document for the commit message. I suppose that nearly all
reported XLS export crashes are the same issue.
At the same time this should improve the performance of our XLS and XLSX
export a bit.
Change-Id: Id19e2515e75e10527d3af62d671377bec23f99e8
diff --git a/sc/source/filter/excel/xecontent.cxx b/sc/source/filter/excel/xecontent.cxx
index b7d5f36..521d1a9 100644
--- a/sc/source/filter/excel/xecontent.cxx
+++ b/sc/source/filter/excel/xecontent.cxx
@@ -1582,17 +1582,21 @@ XclExpDV::XclExpDV( const XclExpRoot& rRoot, sal_uLong nScHandle ) :
2) List is taken from A1 -> formula is =A1 -> writes tRefNR token
Formula compiler supports this by offering two different functions
CreateDataValFormula() and CreateListValFormula(). */
- mxTokArr1 = rFmlaComp.CreateFormula( EXC_FMLATYPE_LISTVAL, *xScTokArr );
- msFormula1 = XclXmlUtils::ToOUString( GetCompileFormulaContext(), pValData->GetSrcPos(),
+ if(GetOutput() == EXC_OUTPUT_BINARY)
+ mxTokArr1 = rFmlaComp.CreateFormula( EXC_FMLATYPE_LISTVAL, *xScTokArr );
+ else
+ msFormula1 = XclXmlUtils::ToOUString( GetCompileFormulaContext(), pValData->GetSrcPos(),
xScTokArr.get());
}
}
else
{
// no list validation -> convert the formula
- mxTokArr1 = rFmlaComp.CreateFormula( EXC_FMLATYPE_DATAVAL, *xScTokArr );
- msFormula1 = XclXmlUtils::ToOUString( GetCompileFormulaContext(), pValData->GetSrcPos(),
- xScTokArr.get());
+ if(GetOutput() == EXC_OUTPUT_BINARY)
+ mxTokArr1 = rFmlaComp.CreateFormula( EXC_FMLATYPE_DATAVAL, *xScTokArr );
+ else
+ msFormula1 = XclXmlUtils::ToOUString( GetCompileFormulaContext(), pValData->GetSrcPos(),
+ xScTokArr.get());
}
}
@@ -1600,9 +1604,11 @@ XclExpDV::XclExpDV( const XclExpRoot& rRoot, sal_uLong nScHandle ) :
xScTokArr.reset( pValData->CreateTokenArry( 1 ) );
if( xScTokArr.get() )
{
- mxTokArr2 = rFmlaComp.CreateFormula( EXC_FMLATYPE_DATAVAL, *xScTokArr );
- msFormula2 = XclXmlUtils::ToOUString( GetCompileFormulaContext(), pValData->GetSrcPos(),
- xScTokArr.get());
+ if(GetOutput() == EXC_OUTPUT_BINARY)
+ mxTokArr2 = rFmlaComp.CreateFormula( EXC_FMLATYPE_DATAVAL, *xScTokArr );
+ else
+ msFormula2 = XclXmlUtils::ToOUString( GetCompileFormulaContext(), pValData->GetSrcPos(),
+ xScTokArr.get());
}
}
else
commit e429686c7797ce6e219dd8cd2dbbb1b59f8909da
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sat Nov 29 20:51:31 2014 +0100
we need to copy the condition format cell for cell, fdo#86253
Change-Id: Ic090e1b9d13780e7e895a85901d3329cc5703688
diff --git a/sc/source/core/data/document10.cxx b/sc/source/core/data/document10.cxx
index c01b264..0ddfbd1 100644
--- a/sc/source/core/data/document10.cxx
+++ b/sc/source/core/data/document10.cxx
@@ -115,8 +115,11 @@ bool ScDocument::CopyOneCellFromClip(
{
maTabs[i]->CopyOneCellFromClip(rCxt, nCol1, nRow1, nCol2, nRow2);
if (rCxt.getInsertFlag() & IDF_ATTRIB)
- maTabs[i]->CopyConditionalFormat(nCol1, nRow1, nCol2, nRow2, nCol1 - aClipRange.aStart.Col(),
- nRow1 - aClipRange.aStart.Row(), pSrcTab);
+ for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow)
+ {
+ maTabs[i]->CopyConditionalFormat(nCol1, nRow, nCol2, nRow, nCol1 - aClipRange.aStart.Col(),
+ nRow - aClipRange.aStart.Row(), pSrcTab);
+ }
}
return true;
More information about the Libreoffice-commits
mailing list