formula/source/core/api/FormulaCompiler.cxx | 14 +++++++------- formula/source/core/api/token.cxx | 11 +++++------ include/formula/FormulaCompiler.hxx | 4 ++-- sc/inc/compiler.hxx | 4 +--- sc/source/core/tool/token.cxx | 2 +- 5 files changed, 16 insertions(+), 19 deletions(-)
New commits: commit 9c1ca6dca3b553c302a635357e33591605343b99 Author: Eike Rathke <er...@redhat.com> Date: Mon Jul 1 23:54:28 2013 +0200 resolved fdo#35411 redefined MAXCODE 512 to FORMULA_MAXTOKENS 8192 Also renamed MAXJUMPCOUNT to FORMULA_MAXJUMPCOUNT but without changing the value as the runtime array size of ocChose depends on it, should be changed before. Eliminated the duplicated and error causing redefinition of both in sc/inc/compiler.hxx Change-Id: I0e87d1439c9564a4f475fcb2870ab51c3b586942 diff --git a/formula/source/core/api/FormulaCompiler.cxx b/formula/source/core/api/FormulaCompiler.cxx index 514d11c..afd6746 100644 --- a/formula/source/core/api/FormulaCompiler.cxx +++ b/formula/source/core/api/FormulaCompiler.cxx @@ -1195,7 +1195,7 @@ void FormulaCompiler::Factor() pFacToken->GetJump()[ 0 ] = 3; // if, else, behind break; case ocChose: - pFacToken->GetJump()[ 0 ] = MAXJUMPCOUNT+1; + pFacToken->GetJump()[ 0 ] = FORMULA_MAXJUMPCOUNT + 1; break; case ocIfError: case ocIfNA: @@ -1225,7 +1225,7 @@ void FormulaCompiler::Factor() nJumpMax = 3; break; case ocChose: - nJumpMax = MAXJUMPCOUNT; + nJumpMax = FORMULA_MAXJUMPCOUNT; break; case ocIfError: case ocIfNA: @@ -1236,7 +1236,7 @@ void FormulaCompiler::Factor() SAL_WARN( "formula.core", "FormulaCompiler::Factor: forgot to add a jump max case?"); } short nJumpCount = 0; - while ( (nJumpCount < (MAXJUMPCOUNT - 1)) && (eOp == ocSep) + while ( (nJumpCount < (FORMULA_MAXJUMPCOUNT - 1)) && (eOp == ocSep) && (!pArr->GetCodeError() || bIgnoreErrors) ) { if ( ++nJumpCount <= nJumpMax ) @@ -1262,7 +1262,7 @@ void FormulaCompiler::Factor() bLimitOk = (nJumpCount <= 3); break; case ocChose: - bLimitOk = (nJumpCount < MAXJUMPCOUNT); /* TODO: check, really <, not <=? */ + bLimitOk = (nJumpCount < FORMULA_MAXJUMPCOUNT); /* TODO: check, really <, not <=? */ break; case ocIfError: case ocIfNA: @@ -1546,7 +1546,7 @@ bool FormulaCompiler::CompileTokenArray() pArr->nRefs = 0; // count from start pArr->DelRPN(); pStack = NULL; - FormulaToken* pData[ MAXCODE ]; + FormulaToken* pData[ FORMULA_MAXTOKENS ]; pCode = pData; bool bWasForced = pArr->IsRecalcModeForced(); if ( bWasForced ) @@ -1951,9 +1951,9 @@ OpCode FormulaCompiler::NextToken() } void FormulaCompiler::PutCode( FormulaTokenRef& p ) { - if( pc >= MAXCODE-1 ) + if( pc >= FORMULA_MAXTOKENS - 1 ) { - if ( pc == MAXCODE-1 ) + if ( pc == FORMULA_MAXTOKENS - 1 ) { p = new FormulaByteToken( ocStop ); p->IncRef(); diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx index b341cdc..9ea036c 100644 --- a/formula/source/core/api/token.cxx +++ b/formula/source/core/api/token.cxx @@ -29,7 +29,6 @@ #include "formula/tokenarray.hxx" #include "formula/FormulaCompiler.hxx" #include <formula/compiler.hrc> -#define MAXJUMPCOUNT 32 /* maximum number of jumps (ocChose) */ namespace formula { @@ -726,8 +725,8 @@ FormulaToken* FormulaTokenArray::MergeArray( ) FormulaToken* FormulaTokenArray::Add( FormulaToken* t ) { if( !pCode ) - pCode = new FormulaToken*[ MAXCODE ]; - if( nLen < MAXCODE-1 ) + pCode = new FormulaToken*[ FORMULA_MAXTOKENS ]; + if( nLen < FORMULA_MAXTOKENS - 1 ) { CheckToken(*t); pCode[ nLen++ ] = t; @@ -742,7 +741,7 @@ FormulaToken* FormulaTokenArray::Add( FormulaToken* t ) else { t->Delete(); - if ( nLen == MAXCODE-1 ) + if ( nLen == FORMULA_MAXTOKENS - 1 ) { t = new FormulaByteToken( ocStop ); pCode[ nLen++ ] = t; @@ -1194,11 +1193,11 @@ FormulaToken* FormulaTokenArray::AddOpCode( OpCode eOp ) case ocIfNA: case ocChose: { - short nJump[MAXJUMPCOUNT + 1]; + short nJump[FORMULA_MAXJUMPCOUNT + 1]; if ( eOp == ocIf ) nJump[ 0 ] = 3; else if ( eOp == ocChose ) - nJump[ 0 ] = MAXJUMPCOUNT + 1; + nJump[ 0 ] = FORMULA_MAXJUMPCOUNT + 1; else nJump[ 0 ] = 2; pRet = new FormulaJumpToken( eOp, (short*)nJump ); diff --git a/include/formula/FormulaCompiler.hxx b/include/formula/FormulaCompiler.hxx index b53bb2d..6e271ca 100644 --- a/include/formula/FormulaCompiler.hxx +++ b/include/formula/FormulaCompiler.hxx @@ -36,8 +36,8 @@ #include "formula/ExternalReferenceHelper.hxx" -#define MAXJUMPCOUNT 32 /* maximum number of jumps (ocChose) */ -#define MAXCODE 512 /* maximum number of tokens in formula */ +#define FORMULA_MAXJUMPCOUNT 32 /* maximum number of jumps (ocChose) */ +#define FORMULA_MAXTOKENS 8192 /* maximum number of tokens in formula */ namespace com { namespace sun { namespace star { diff --git a/sc/inc/compiler.hxx b/sc/inc/compiler.hxx index 518635d..4f4a58c 100644 --- a/sc/inc/compiler.hxx +++ b/sc/inc/compiler.hxx @@ -42,9 +42,7 @@ // constants and data types also for external modules (ScInterpreter et al) -#define MAXCODE 512 /* maximum number of tokens in formula */ #define MAXSTRLEN 1024 /* maximum length of input string of one symbol */ -#define MAXJUMPCOUNT 32 /* maximum number of jumps (ocChose) */ // flag values of CharTable #define SC_COMPILER_C_ILLEGAL 0x00000000 @@ -146,7 +144,7 @@ public: ScMatrix* pMat; sal_uInt16 nError; sal_Unicode cStr[ MAXSTRLEN+1 ]; // string (up to 255 characters + 0) - short nJump[MAXJUMPCOUNT+1]; // If/Chose token + short nJump[ FORMULA_MAXJUMPCOUNT + 1 ]; // If/Chose token }; //! other members not initialized diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx index 2b56456..3dff6a9 100644 --- a/sc/source/core/tool/token.cxx +++ b/sc/source/core/tool/token.cxx @@ -136,7 +136,7 @@ void ScRawToken::SetOpCode( OpCode e ) break; case ocChose: eType = svJump; - nJump[ 0 ] = MAXJUMPCOUNT+1; + nJump[ 0 ] = FORMULA_MAXJUMPCOUNT + 1; break; case ocMissing: eType = svMissing; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits