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

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Dec 4 15:08:04 UTC 2018


 sc/source/core/opencl/op_statistical.cxx |   24 ++++--------------------
 1 file changed, 4 insertions(+), 20 deletions(-)

New commits:
commit c0c03aadb3ec25ca5c4c07f270164158b6667cc2
Author:     Luboš Luňák <l.lunak at collabora.com>
AuthorDate: Tue Nov 27 15:53:45 2018 +0100
Commit:     Luboš Luňák <l.lunak at collabora.com>
CommitDate: Tue Dec 4 16:07:39 2018 +0100

    make OpenCL SLOPE() handle problems more gracefully
    
    It's silly to just return NaN just because the function can't handle
    something. If nothing else, at least a proper error should be reported
    (or in this case, the fallback to the core function will take care of it).
    
    Change-Id: I9c971082f4c5c9836318cf63d15fa7c278274273
    Reviewed-on: https://gerrit.libreoffice.org/64244
    Tested-by: Jenkins
    Reviewed-by: Luboš Luňák <l.lunak at collabora.com>

diff --git a/sc/source/core/opencl/op_statistical.cxx b/sc/source/core/opencl/op_statistical.cxx
index 5278ad2b31f7..d18b3ffceec1 100644
--- a/sc/source/core/opencl/op_statistical.cxx
+++ b/sc/source/core/opencl/op_statistical.cxx
@@ -2548,6 +2548,7 @@ void OpStDevP::GenSlidingWindowFunction(std::stringstream &ss,
 void OpSlope::GenSlidingWindowFunction(std::stringstream &ss,
             const std::string &sSymName, SubArguments &vSubArguments)
 {
+    CHECK_PARAMETER_COUNT(2,2);
     ss << "\ndouble " << sSymName;
     ss << "_" << BinFuncName() << "(";
     for (size_t i = 0; i < vSubArguments.size(); i++)
@@ -2567,12 +2568,6 @@ void OpSlope::GenSlidingWindowFunction(std::stringstream &ss,
     ss << "    double fCount = 0.0;\n";
     ss << "    double argX = 0.0;\n";
     ss << "    double argY = 0.0;\n";
-    if(vSubArguments.size() != 2)
-    {
-        ss << "    return NAN;\n";
-        ss << "}\n";
-        return ;
-    }
     FormulaToken *pCur = vSubArguments[1]->GetFormulaToken();
     FormulaToken *pCur1 = vSubArguments[0]->GetFormulaToken();
     assert(pCur);
@@ -2591,11 +2586,7 @@ void OpSlope::GenSlidingWindowFunction(std::stringstream &ss,
                pDVR1->GetArrayLength() ? pDVR->GetArrayLength():
                     pDVR1->GetArrayLength();
         if(nCurWindowSize != nCurWindowSize1)
-        {
-            ss << "    return NAN;\n";
-            ss << "}\n";
-            return ;
-        }
+            throw Unhandled(__FILE__, __LINE__);
         ss << "    for (int i = ";
         if ((!pDVR->IsStartFixed() && pDVR->IsEndFixed())
             &&(!pDVR1->IsStartFixed() && pDVR1->IsEndFixed()))
@@ -2626,13 +2617,7 @@ void OpSlope::GenSlidingWindowFunction(std::stringstream &ss,
         }
         else
         {
-            ss << "0; i < " << nCurWindowSize << "; i++)\n";
-            ss << "    {\n";
-            ss << "        break;\n";
-            ss << "    }";
-            ss << "    return NAN;\n";
-            ss << "}\n";
-            return ;
+            throw Unhandled(__FILE__, __LINE__);
         }
 
         ss << "        argX = ";
@@ -2701,8 +2686,7 @@ void OpSlope::GenSlidingWindowFunction(std::stringstream &ss,
     }
     else
     {
-        ss << "    return NAN;\n";
-        ss << "}\n";
+        throw Unhandled(__FILE__, __LINE__);
     }
 }
 void OpSTEYX::GenSlidingWindowFunction(std::stringstream &ss,


More information about the Libreoffice-commits mailing list