Fix crash in Covariance if # threads > 1 requested without OpenMP. - Previously if options.num_threads > 1 was given to Covariance compiled without OpenMP, a CHECK() would be triggered in program_evalutor. Change-Id: Iaade4f5ed5326b0c59a7014c750c41ee026e1124
diff --git a/internal/ceres/covariance_impl.cc b/internal/ceres/covariance_impl.cc index 821be49..cfbfb44 100644 --- a/internal/ceres/covariance_impl.cc +++ b/internal/ceres/covariance_impl.cc
@@ -79,8 +79,17 @@ : options_(options), is_computed_(false), is_valid_(false) { - evaluate_options_.num_threads = options.num_threads; - evaluate_options_.apply_loss_function = options.apply_loss_function; +#ifndef CERES_USE_OPENMP + if (options_.num_threads > 1) { + LOG(WARNING) + << "OpenMP support is not compiled into this binary; " + << "only options.num_threads = 1 is supported. Switching " + << "to single threaded mode."; + options_.num_threads = 1; + } +#endif + evaluate_options_.num_threads = options_.num_threads; + evaluate_options_.apply_loss_function = options_.apply_loss_function; } CovarianceImpl::~CovarianceImpl() {