sc/source/filter/lotus/lotform.cxx | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-)
New commits: commit e6ced1496da9580cf885cce1a2fc9f67528c3a0e Author: Eike Rathke <[email protected]> Date: Fri Feb 2 15:39:58 2018 +0100 Do not force non-existent parameters into the TokenPool, ofz-related Change-Id: I2fa0ae81b987af592c14486040077c9ff157fab9 diff --git a/sc/source/filter/lotus/lotform.cxx b/sc/source/filter/lotus/lotform.cxx index 7bb0f453602b..3ab1e020d1af 100644 --- a/sc/source/filter/lotus/lotform.cxx +++ b/sc/source/filter/lotus/lotform.cxx @@ -193,12 +193,23 @@ void LotusToSc::DoFunc( DefTokenId eOc, sal_uInt8 nCnt, const sal_Char* pExtStri sal_Int16 nLast = nCnt - 1; if( eOc == ocPMT ) - { // special case ocPMT, ignore (negate?) last parameter! + { // special case ocPMT, negate last parameter! // additionally: 1. -> 3., 3. -> 2., 2. -> 1. - SAL_WARN_IF( nCnt != 3, "sc", - "+LotusToSc::DoFunc(): ocPMT needs 3 parameters!" ); - aPool << eParam[ 1 ] << ocSep << eParam[ 0 ] << ocSep - << ocNegSub << eParam[ 2 ]; + SAL_WARN_IF( nCnt != 3, "sc", "+LotusToSc::DoFunc(): ocPMT needs 3 parameters!" ); + // There should be at least 3 arguments, but with binary crap may not.. + switch (nCnt) + { + case 1: + aPool << eParam[ 1 ]; + break; + case 2: + aPool << eParam[ 1 ] << ocSep << eParam[ 0 ]; + break; + default: + case 3: + aPool << eParam[ 1 ] << ocSep << eParam[ 0 ] << ocSep << ocNegSub << eParam[ 2 ]; + break; + } } else { // default _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
