Related: tdf#137543 - fix LET function jump count number

Clean-up and fix wrong jump count.

Change-Id: Ie64ff95f63c17d2726b3a522af981bcaea2a9a32
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168590
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
diff --git a/formula/source/core/api/FormulaCompiler.cxx b/formula/source/core/api/FormulaCompiler.cxx
index 453c730..8f0dd62 100644
--- a/formula/source/core/api/FormulaCompiler.cxx
+++ b/formula/source/core/api/FormulaCompiler.cxx
@@ -1955,7 +1955,7 @@ void FormulaCompiler::Factor()
                    pFacToken->GetJump()[ 0 ] = FORMULA_MAXJUMPCOUNT + 1;
                    break;
                case ocLet:
                    pFacToken->GetJump()[0] = SAL_MAX_UINT8 + 1;
                    pFacToken->GetJump()[ 0 ] = FORMULA_MAXPARAMS + 1;
                    break;
                case ocIfError:
                case ocIfNA:
@@ -1990,7 +1990,7 @@ void FormulaCompiler::Factor()
                    nJumpMax = FORMULA_MAXJUMPCOUNT;
                    break;
                case ocLet:
                    nJumpMax = SAL_MAX_UINT8;
                    nJumpMax = FORMULA_MAXPARAMS;
                    break;
                case ocIfError:
                case ocIfNA:
@@ -2007,7 +2007,7 @@ void FormulaCompiler::Factor()
                    assert(!"FormulaCompiler::Factor: someone forgot to add a jump max case");
            }
            short nJumpCount = 0;
            while ( (nJumpCount < (SAL_MAX_UINT8 - 1)) && (eOp == ocSep)
            while ( (nJumpCount < (FORMULA_MAXPARAMS - 1)) && (eOp == ocSep)
                    && (pArr->GetCodeError() == FormulaError::NONE || !mbStopOnError))
            {
                if ( ++nJumpCount <= nJumpMax )
@@ -2037,7 +2037,7 @@ void FormulaCompiler::Factor()
                        bLimitOk = (nJumpCount < FORMULA_MAXJUMPCOUNT);
                        break;
                    case ocLet:
                        bLimitOk = (nJumpCount < SAL_MAX_UINT8);
                        bLimitOk = (nJumpCount < FORMULA_MAXPARAMS);
                        break;
                    case ocIfError:
                    case ocIfNA:
diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx
index d722d76..c812467 100644
--- a/formula/source/core/api/token.cxx
+++ b/formula/source/core/api/token.cxx
@@ -1584,13 +1584,13 @@ FormulaToken* FormulaTokenArray::AddOpCode( OpCode eOp )
        case ocChoose:
        case ocLet:
            {
                short nJump[SAL_MAX_UINT8 + 1];
                short nJump[FORMULA_MAXPARAMS + 1];
                if ( eOp == ocIf )
                    nJump[ 0 ] = 3;
                else if ( eOp == ocChoose )
                    nJump[ 0 ] = FORMULA_MAXJUMPCOUNT + 1;
                else if ( eOp == ocLet )
                    nJump[0] = SAL_MAX_UINT8 + 1;
                    nJump[ 0 ] = FORMULA_MAXPARAMS + 1;
                else
                    nJump[ 0 ] = 2;
                pRet = new FormulaJumpToken( eOp, nJump );
diff --git a/include/formula/tokenarray.hxx b/include/formula/tokenarray.hxx
index 4e59ca8..98e1f4d 100644
--- a/include/formula/tokenarray.hxx
+++ b/include/formula/tokenarray.hxx
@@ -579,7 +579,6 @@ public:

private:
    SAL_DLLPRIVATE const FormulaToken* GetNonEndOfPathToken( short nIdx ) const;
    SAL_DLLPRIVATE const FormulaToken* GetNonEndOfPathToken2( short nIdx ) const;
};

// For use in SAL_INFO, SAL_WARN etc
diff --git a/sc/inc/compiler.hxx b/sc/inc/compiler.hxx
index ba53dbb..7041360 100644
--- a/sc/inc/compiler.hxx
+++ b/sc/inc/compiler.hxx
@@ -138,7 +138,7 @@ public:
        } sharedstring;
        ScMatrix*    pMat;
        FormulaError nError;
        short        nJump[ FORMULA_MAXJUMPCOUNT + 1 ];     // If/Chose token
        short        nJump[ FORMULA_MAXPARAMS + 1 ];     // If/Choose/Let token
    };
    OUString   maExternalName; // depending on the opcode, this is either the external, or the external name, or the external table name

diff --git a/sc/source/core/tool/parclass.cxx b/sc/source/core/tool/parclass.cxx
index d920807..a38f0f7 100644
--- a/sc/source/core/tool/parclass.cxx
+++ b/sc/source/core/tool/parclass.cxx
@@ -571,12 +571,12 @@ void ScParameterClassification::GenerateDocumentation()
                switch ( eOp )
                {
                    case ocIf:
                    case ocLet:
                        aToken.SetByte(3);
                    break;
                    case ocIfError:
                    case ocIfNA:
                    case ocChoose:
                    case ocLet:
                        aToken.SetByte(2);
                    break;
                    case ocPercentSign:
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index 2c63eb2..9881f33 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -223,7 +223,7 @@ void ScRawToken::SetOpCode( OpCode e )
            break;
        case ocLet:
            eType = svJump;
            nJump[0] = SAL_MAX_UINT8;
            nJump[ 0 ] = FORMULA_MAXPARAMS + 1;
            break;
        case ocMissing:
            eType = svMissing;