sc/source/core/opencl/formulagroupcl.cxx |   57 +++++++++++++++++++++----------
 1 file changed, 40 insertions(+), 17 deletions(-)

New commits:
commit b5197286f396245c82378be05e9fea4310326eb5
Author: Kohei Yoshida <[email protected]>
Date:   Tue Sep 17 16:48:20 2013 -0400

    Bail out early on error.
    
    Change-Id: I1844284ff829f6af6c2cfe10935cfc1eef155deb

diff --git a/sc/source/core/opencl/formulagroupcl.cxx 
b/sc/source/core/opencl/formulagroupcl.cxx
index 5697b1b..139a219 100644
--- a/sc/source/core/opencl/formulagroupcl.cxx
+++ b/sc/source/core/opencl/formulagroupcl.cxx
@@ -308,7 +308,14 @@ bool FormulaGroupInterpreterOpenCL::chooseFunction( 
OclCalc &ocl_calc, double *&
             pGroundWaterDataArray=NULL;
             delta = mdpSvdouble[0];
         }
-        ocl_calc.oclGroundWaterGroup( 
mnOperatorGroup,mnOperatorCount,pGroundWaterDataArray,pArrayToSubtractOneElementFrom,nSrcData,mnRowSize,delta,mnpOclStartPos,mnpOclEndPos,dpResult);
+
+        bool bSuccess = ocl_calc.oclGroundWaterGroup(
+            mnOperatorGroup, mnOperatorCount, pGroundWaterDataArray,
+            pArrayToSubtractOneElementFrom, nSrcData, mnRowSize, delta,
+            mnpOclStartPos, mnpOclEndPos, dpResult);
+
+        if (!bSuccess)
+            return false;
     }
     else if( isStockHistory() )
     {
@@ -332,14 +339,19 @@ bool FormulaGroupInterpreterOpenCL::chooseFunction( 
OclCalc &ocl_calc, double *&
             {
                 if (!ocl_calc.createFormulaBuf64Bits(nSrcDataSize, mnRowSize))
                     return false;
-                ocl_calc.mapAndCopy64Bits( 
dpOclSrcData,mnpOclStartPos,mnpOclEndPos,nSrcDataSize,mnRowSize );
-                ocl_calc.oclHostFormulaStatistics64Bits( mcHostName, dpResult, 
mnRowSize );
+                if (!ocl_calc.mapAndCopy64Bits(dpOclSrcData, mnpOclStartPos, 
mnpOclEndPos, nSrcDataSize, mnRowSize))
+                    return false;
+                if (!ocl_calc.oclHostFormulaStatistics64Bits(mcHostName, 
dpResult, mnRowSize))
+                    return false;
             }
             else
             {
-                ocl_calc.createFormulaBuf32Bits( nSrcDataSize, mnPositonLen );
-                ocl_calc.mapAndCopy32Bits( dpOclSrcData, mnpOclStartPos, 
mnpOclEndPos, nSrcDataSize, mnRowSize);
-                ocl_calc.oclHostFormulaStatistics32Bits( mcHostName, dpResult, 
mnRowSize );
+                if (!ocl_calc.createFormulaBuf32Bits(nSrcDataSize, 
mnPositonLen))
+                    return false;
+                if (!ocl_calc.mapAndCopy32Bits(dpOclSrcData, mnpOclStartPos, 
mnpOclEndPos, nSrcDataSize, mnRowSize))
+                    return false;
+                if (!ocl_calc.oclHostFormulaStatistics32Bits(mcHostName, 
dpResult, mnRowSize))
+                    return false;
             }
         }
     }
@@ -359,16 +371,21 @@ bool FormulaGroupInterpreterOpenCL::chooseFunction( 
OclCalc &ocl_calc, double *&
         {
             if ( ocl_calc.gpuEnv.mnKhrFp64Flag == 1 || 
ocl_calc.gpuEnv.mnAmdFp64Flag == 1 )
             {
-                ocl_calc.createArithmeticOptBuf64Bits( mnRowSize );
-                ocl_calc.mapAndCopy64Bits(dpLeftData,dpRightData,mnRowSize);
+                if (!ocl_calc.createArithmeticOptBuf64Bits(mnRowSize))
+                    return false;
+                if (!ocl_calc.mapAndCopy64Bits(dpLeftData, dpRightData, 
mnRowSize))
+                    return false;
                 if (!ocl_calc.oclHostArithmeticOperator64Bits(mcHostName, 
dpResult, mnRowSize))
                     return false;
             }
             else
             {
-                ocl_calc.createArithmeticOptBuf32Bits( mnRowSize );
-                ocl_calc.mapAndCopy32Bits(dpLeftData,dpRightData,mnRowSize);
-                ocl_calc.oclHostArithmeticOperator32Bits( 
mcHostName,dpResult,mnRowSize );
+                if (!ocl_calc.createArithmeticOptBuf32Bits(mnRowSize))
+                    return false;
+                if (!ocl_calc.mapAndCopy32Bits(dpLeftData, dpRightData, 
mnRowSize))
+                    return false;
+                if (!ocl_calc.oclHostArithmeticOperator32Bits(mcHostName, 
dpResult, mnRowSize))
+                    return false;
             }
         }
     }
@@ -396,15 +413,21 @@ bool FormulaGroupInterpreterOpenCL::chooseFunction( 
OclCalc &ocl_calc, double *&
         {
             if ( ocl_calc.gpuEnv.mnKhrFp64Flag == 1 || 
ocl_calc.gpuEnv.mnAmdFp64Flag == 1 )
             {
-                ocl_calc.createMoreColArithmeticBuf64Bits( j * mnRowSize, 
mnOperatorCount );
-                ocl_calc.mapAndCopyMoreColArithmetic64Bits( 
dpMoreColArithmetic, mnRowSize * j, mnOperatorGroup, mnOperatorCount );
-                ocl_calc.oclMoreColHostArithmeticOperator64Bits( mnRowSize, 
mnOperatorCount, dpResult,mnRowSize );
+                if (!ocl_calc.createMoreColArithmeticBuf64Bits(j * mnRowSize, 
mnOperatorCount))
+                    return false;
+                if 
(!ocl_calc.mapAndCopyMoreColArithmetic64Bits(dpMoreColArithmetic, mnRowSize * 
j, mnOperatorGroup, mnOperatorCount))
+                    return false;
+                if 
(!ocl_calc.oclMoreColHostArithmeticOperator64Bits(mnRowSize, mnOperatorCount, 
dpResult, mnRowSize))
+                    return false;
             }
             else
             {
-                ocl_calc.createMoreColArithmeticBuf32Bits( j* mnRowSize, 
mnOperatorCount );
-                
ocl_calc.mapAndCopyMoreColArithmetic32Bits(dpMoreColArithmetic, mnRowSize * j, 
mnOperatorGroup, mnOperatorCount);
-                ocl_calc.oclMoreColHostArithmeticOperator32Bits( mnRowSize, 
mnOperatorCount, dpResult, mnRowSize );
+                if (!ocl_calc.createMoreColArithmeticBuf32Bits(j* mnRowSize, 
mnOperatorCount))
+                    return false;
+                if 
(!ocl_calc.mapAndCopyMoreColArithmetic32Bits(dpMoreColArithmetic, mnRowSize * 
j, mnOperatorGroup, mnOperatorCount))
+                    return false;
+                if 
(!ocl_calc.oclMoreColHostArithmeticOperator32Bits(mnRowSize, mnOperatorCount, 
dpResult, mnRowSize))
+                    return false;
             }
         }
     }
_______________________________________________
Libreoffice-commits mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to