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

Eike Rathke erack at redhat.com
Fri May 6 23:07:44 UTC 2016


 sc/source/core/tool/interpr8.cxx |   14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

New commits:
commit 2844f3114c2a7b122fe299ed21ed06ca57866e47
Author: Eike Rathke <erack at redhat.com>
Date:   Fri May 6 22:01:46 2016 +0200

    actually propagate a match expression error, tdf#97831 follow-up
    
    Change-Id: Iaeecf371af8dd5f6c2cbdea2f114566e8bf7cf47

diff --git a/sc/source/core/tool/interpr8.cxx b/sc/source/core/tool/interpr8.cxx
index 36304d8..7d1349f 100644
--- a/sc/source/core/tool/interpr8.cxx
+++ b/sc/source/core/tool/interpr8.cxx
@@ -1952,6 +1952,7 @@ void ScInterpreter::ScSwitch_MS()
             isValue = ScMatrix::IsValueType( GetDoubleOrStringFromMatrix( fRefVal, aRefStr ) );
             break;
         default :
+            PopError();
             PushIllegalArgument();
             return;
     }
commit c54f6161480fc3721bf8e208cd12a7446ab608b7
Author: Eike Rathke <erack at redhat.com>
Date:   Fri May 6 21:52:28 2016 +0200

    coverity#1359230 DEADCODE, detect missing parameter, tdf#97831 follow-up
    
    ... so SWITCH with less than 3 parameters returns the proper error code
    instead of #N/A.
    
    Change-Id: Ib5d696a640f7084ca46c3cf8f378ea6e659e3f11

diff --git a/sc/source/core/tool/interpr8.cxx b/sc/source/core/tool/interpr8.cxx
index 1b7bf6d..36304d8 100644
--- a/sc/source/core/tool/interpr8.cxx
+++ b/sc/source/core/tool/interpr8.cxx
@@ -1913,6 +1913,9 @@ void ScInterpreter::ScSwitch_MS()
 {
     short nParamCount = GetByte();
 
+    if (!MustHaveParamCountMin( nParamCount, 3))
+        return;
+
     ReverseStack( nParamCount );
 
     nGlobalError = 0;   // propagate only for match or active result path
@@ -1970,13 +1973,6 @@ void ScInterpreter::ScSwitch_MS()
              ( !isValue && aRefStr.getDataIgnoreCase() == aStr.getDataIgnoreCase() )) )
         {
             // TRUE
-            if ( nParamCount < 1 )
-            {
-                // no parameter given for THEN
-                nGlobalError = nFirstMatchError;
-                PushParameterExpected();
-                return;
-            }
             bFinished = true;
         }
         else
commit 0ed8a6a5bbe31c9713d017594fbbcf38618e8c1d
Author: Eike Rathke <erack at redhat.com>
Date:   Fri May 6 21:29:57 2016 +0200

    coverity#1359229 handle PopDoubleRefOrSingleRef() as usual
    
    Change-Id: Ib74f00725f2e8b78cbbb92ef9760da74401c1984

diff --git a/sc/source/core/tool/interpr8.cxx b/sc/source/core/tool/interpr8.cxx
index 5cb33f0..1b7bf6d 100644
--- a/sc/source/core/tool/interpr8.cxx
+++ b/sc/source/core/tool/interpr8.cxx
@@ -1933,8 +1933,7 @@ void ScInterpreter::ScSwitch_MS()
         case svDoubleRef :
             {
                 ScAddress aAdr;
-                PopDoubleRefOrSingleRef( aAdr );
-                if ( nGlobalError )
+                if (!PopDoubleRefOrSingleRef( aAdr ))
                     break;
                 ScRefCellValue aCell( *pDok, aAdr );
                 isValue = !( aCell.hasString() || aCell.hasEmptyValue() || aCell.isEmpty() );


More information about the Libreoffice-commits mailing list