si_safe_eval return value
extern cl_object
si_safe_eval(cl_narg narg, cl_object form, cl_object env, ...)
{
if (narg == 3) {
cl_object err_value;
va_list args; va_start(args, env);
err_value = va_arg(args, cl_object);
return _ecl_funcall4(@'ext::safe-eval', form, env, err_value);
}
return _ecl_funcall3(@'ext::safe-eval', form, env);
}
ECL when provided with the third (fourth if we count narg) argument returns on error provided value (without invoking the debugger). This should be documented. It's a usable feature for production code (we don't want the debugger invoking there on each error – it would hang the service), but undocumented it's useless.