diff --git a/eo/src/eoEvalTimeThrowException.h b/eo/src/eoEvalTimeThrowException.h index b1ac9662..3b0bc14f 100644 --- a/eo/src/eoEvalTimeThrowException.h +++ b/eo/src/eoEvalTimeThrowException.h @@ -31,12 +31,17 @@ class eoEvalTimeThrowException : public eoEvalFuncCounter< EOT > public: eoEvalTimeThrowException( eoEvalFunc & func, time_t max ) : _max(max), _start( std::time(NULL) ), eoEvalFuncCounter( func, "Eval.") {} - virtual bool operator() (const eoPop < EOT > & _pop) + virtual void operator() ( EOT & eo ) { - time_t elapsed = static_cast( std::difftime( std::time(NULL) , _start ) ); + if( eo.invalid() ) { - if( elapsed >= _max ) { + time_t elapsed = static_cast( std::difftime( std::time(NULL) , _start ) ); + + if( elapsed >= _max ) { throw eoMaxTimeException(elapsed); + } else { + func(eo); + } } }