diff options
-rw-r--r-- | sc/source/core/opencl/formulagroupcl.cxx | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx index d329f5daa8fb..00909bec14b7 100644 --- a/sc/source/core/opencl/formulagroupcl.cxx +++ b/sc/source/core/opencl/formulagroupcl.cxx @@ -3445,7 +3445,8 @@ bool FormulaGroupInterpreterOpenCL::interpret( ScDocument& rDoc, const ScAddress& rTopPos, ScFormulaCellGroupRef& xGroup, ScTokenArray& rCode ) { - DynamicKernel *pKernel; + DynamicKernel *pKernel = NULL; + boost::scoped_ptr<DynamicKernel> pLocalKernel; if (xGroup->meKernelState == sc::OpenCLKernelCompilationScheduled || xGroup->meKernelState == sc::OpenCLKernelBinaryCreated) @@ -3462,6 +3463,7 @@ bool FormulaGroupInterpreterOpenCL::interpret( ScDocument& rDoc, { assert(xGroup->meCalcState == sc::GroupCalcRunning); pKernel = static_cast<DynamicKernel*>(createCompiledFormula(rDoc, rTopPos, *xGroup, rCode)); + pLocalKernel.reset(pKernel); // to be deleted when done. } if (!pKernel) @@ -3487,8 +3489,6 @@ bool FormulaGroupInterpreterOpenCL::interpret( ScDocument& rDoc, err = clEnqueueUnmapMemObject(kEnv.mpkCmdQueue, res, resbuf, 0, NULL, NULL); if (err != CL_SUCCESS) throw OpenCLError(err, __FILE__, __LINE__); - if (xGroup->meCalcState == sc::GroupCalcRunning) - delete pKernel; } catch (const UnhandledToken &ut) { std::cerr << "\nDynamic formual compiler: unhandled token: "; |