sc/source/filter/qpro/qproform.cxx | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-)
New commits: commit bc697917c79609243305dcecc7aeef2f3776611c Author: Eike Rathke <er...@redhat.com> Date: Thu Feb 1 22:05:19 2018 +0100 ofz: do not force non-existent parameters into the TokenPool Apart from that, the hard coded storage order for ocRRI and ocIpmt did the same as the general loop, just with a fixed number of parameters. Instead, limit the number of arguments for the loop for these opcodes. Change-Id: I378ccaf60da61c1a385555451456d8422ee33c50 diff --git a/sc/source/filter/qpro/qproform.cxx b/sc/source/filter/qpro/qproform.cxx index 6555a7842037..70dabdedeed8 100644 --- a/sc/source/filter/qpro/qproform.cxx +++ b/sc/source/filter/qpro/qproform.cxx @@ -136,20 +136,29 @@ void QProToSc::DoFunc( DefTokenId eOc, sal_uInt16 nArgs, const sal_Char* pExtStr if( nArgs> 0 ) { - sal_Int16 nLast = nArgs- 1; - if( eOc == ocRRI ) - aPool << eParam[ 2 ] << ocSep << eParam[ 1 ] << ocSep << eParam[ 0 ]; - if( eOc == ocIpmt ) - aPool << eParam[ 3 ] << ocSep << eParam[ 2 ] << ocSep << eParam[ 1 ] << ocSep << eParam[ 0 ]; - else { - aPool << eParam[ nLast ]; - for( nCount = nLast - 1 ; nCount >= 0 ; nCount-- ) - { - if( nCount != -1 ) - aPool << ocSep << eParam[ nCount ]; - } + // There should be at least 3 arguments, but with binary crap may not.. + SAL_WARN_IF( nArgs < 3, "sc.filter","QProToSc::DoFunc - ocRRI expects 3 parameters but got " << nArgs); + // Store first 3 parameters to pool in order 2,1,0 + if (nArgs > 3) + nArgs = 3; + } + else if( eOc == ocIpmt ) + { + // There should be at least 4 arguments, but with binary crap may not.. + SAL_WARN_IF( nArgs < 4, "sc.filter","QProToSc::DoFunc - ocIpmt expects 4 parameters but got " << nArgs); + // Store first 4 parameters to pool in order 3,2,1,0 + if (nArgs > 3) + nArgs = 3; + } + + sal_Int16 nLast = nArgs - 1; + aPool << eParam[ nLast ]; + for( nCount = nLast - 1 ; nCount >= 0 ; nCount-- ) + { + if( nCount != -1 ) + aPool << ocSep << eParam[ nCount ]; } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits