[Libreoffice-commits] core.git: sc/source

Eike Rathke erack at redhat.com
Sat Jul 7 22:38:14 UTC 2018


 sc/source/core/tool/interpr1.cxx |   36 +++++++++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

New commits:
commit a5b9bb7be70c7aec2388199e68a0cf86dd220955
Author: Eike Rathke <erack at redhat.com>
Date:   Sat Jul 7 23:00:50 2018 +0200

    Resolves: tdf#118561 handle external references as jump matrix result
    
    Change-Id: I0381179347960293f5d470ed231d626cb6707b5a
    Reviewed-on: https://gerrit.libreoffice.org/57144
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Jenkins

diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx
index dd1aaca90d53..33cd8c3f840e 100644
--- a/sc/source/core/tool/interpr1.cxx
+++ b/sc/source/core/tool/interpr1.cxx
@@ -713,10 +713,44 @@ bool ScInterpreter::JumpMatrix( short nStackLevel )
                     }
                 }
                 break;
+                case svExternalSingleRef:
+                {
+                    ScExternalRefCache::TokenRef pToken;
+                    PopExternalSingleRef(pToken);
+                    if (nGlobalError != FormulaError::NONE)
+                    {
+                        pJumpMatrix->PutResultDouble( CreateDoubleError( nGlobalError), nC, nR );
+                        nGlobalError = FormulaError::NONE;
+                    }
+                    else
+                    {
+                        switch (pToken->GetType())
+                        {
+                            case svDouble:
+                                pJumpMatrix->PutResultDouble( pToken->GetDouble(), nC, nR );
+                            break;
+                            case svString:
+                                pJumpMatrix->PutResultString( pToken->GetString(), nC, nR );
+                            break;
+                            case svEmptyCell:
+                                pJumpMatrix->PutResultEmpty( nC, nR );
+                            break;
+                            default:
+                                // svError was already handled (set by
+                                // PopExternalSingleRef()) with nGlobalError
+                                // above.
+                                assert(!"unhandled svExternalSingleRef case");
+                                pJumpMatrix->PutResultDouble( CreateDoubleError(
+                                            FormulaError::UnknownStackVariable), nC, nR );
+                        }
+                    }
+                }
+                break;
+                case svExternalDoubleRef:
                 case svMatrix:
                 {   // match matrix offsets
                     double fVal;
-                    ScMatrixRef pMat = PopMatrix();
+                    ScMatrixRef pMat = GetMatrix();
                     if ( nGlobalError != FormulaError::NONE )
                     {
                         fVal = CreateDoubleError( nGlobalError );


More information about the Libreoffice-commits mailing list