From 2d8acd0cf579ee219eae3dcc91f33201197c9809 Mon Sep 17 00:00:00 2001 From: Anthony Geay Date: Tue, 7 May 2019 09:56:30 +0200 Subject: [PATCH] Avoid crash with getErrorReport when cloning process failed in ForEachLoop --- src/engine/DynParaLoop.cxx | 9 ++++++--- src/engine/ForEachLoop.cxx | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/engine/DynParaLoop.cxx b/src/engine/DynParaLoop.cxx index 7602af0b7..a0fa8b453 100644 --- a/src/engine/DynParaLoop.cxx +++ b/src/engine/DynParaLoop.cxx @@ -640,10 +640,13 @@ std::string DynParaLoop::getErrorReport() } for(vector::iterator iter=_execNodes.begin();iter!=_execNodes.end();iter++) { - std::string rep=(*iter)->getErrorReport(); - if(rep != "") + if(*iter) { - report=report+rep+"\n"; + std::string rep=(*iter)->getErrorReport(); + if(rep != "") + { + report=report+rep+"\n"; + } } } for(vector::iterator iter=_execFinalizeNodes.begin();iter!=_execFinalizeNodes.end();iter++) diff --git a/src/engine/ForEachLoop.cxx b/src/engine/ForEachLoop.cxx index 223f1b006..4605bbada 100644 --- a/src/engine/ForEachLoop.cxx +++ b/src/engine/ForEachLoop.cxx @@ -610,6 +610,7 @@ void ForEachLoop::exUpdateState() //ForEachLoop must be put in error and the exception rethrown to notify the caller DEBTRACE( "ForEachLoop::exUpdateState: " << ex.what() ); setState(YACS::ERROR); + setErrorDetails(ex.what()); exForwardFailed(); throw; } -- 2.39.2