From e0c54f22705012442e36780c7814e3e32cdbad19 Mon Sep 17 00:00:00 2001
From: Wouter Deconinck <wdconinc@gmail.com>
Date: Thu, 28 Jul 2022 20:39:12 +0000
Subject: [PATCH] fix: test before fit pointer dereference; exit 1 if null

---
 benchmarks/dis/analysis/dis_electrons.cxx | 60 +++++++++++++++--------
 1 file changed, 40 insertions(+), 20 deletions(-)

diff --git a/benchmarks/dis/analysis/dis_electrons.cxx b/benchmarks/dis/analysis/dis_electrons.cxx
index 9ac81ce3..8a27c544 100644
--- a/benchmarks/dis/analysis/dis_electrons.cxx
+++ b/benchmarks/dis/analysis/dis_electrons.cxx
@@ -154,27 +154,47 @@ int dis_electrons(const std::string& config_name)
   fmt::print(fmt::emphasis::bold | fg(fmt::color::forest_green),
              "Inclusive kinematics summary:\n");
   fmt::print("Q2 resolution:\n");
-  fmt::print(" - electron: {} +/- {}\n",
-    f_Q2_el_res->Parameter(1), f_Q2_el_res->Error(1));
-  fmt::print(" - sigma:    {} +/- {}\n",
-    f_Q2_sigma_res->Parameter(1), f_Q2_sigma_res->Error(1));
-  fmt::print(" - esigma:   {} +/- {}\n",
-    f_Q2_esigma_res->Parameter(1), f_Q2_esigma_res->Error(1));
-  fmt::print(" - JB:       {} +/- {}\n",
-    f_Q2_jb_res->Parameter(1), f_Q2_jb_res->Error(1));
-  fmt::print(" - DA:       {} +/- {}\n",
-    f_Q2_da_res->Parameter(1), f_Q2_da_res->Error(1));
+  if (f_Q2_el_res == 0) {
+    fmt::print(" - electron: {} +/- {}\n",
+      f_Q2_el_res->Parameter(1), f_Q2_el_res->Error(1));
+  } else return 1;
+  if (f_Q2_sigma_res == 0) {
+    fmt::print(" - sigma:    {} +/- {}\n",
+      f_Q2_sigma_res->Parameter(1), f_Q2_sigma_res->Error(1));
+  } else return 1;
+  if (f_Q2_esigma_res == 0) {
+    fmt::print(" - esigma:   {} +/- {}\n",
+      f_Q2_esigma_res->Parameter(1), f_Q2_esigma_res->Error(1));
+  } else return 1;
+  if (f_Q2_jb_res == 0) {
+    fmt::print(" - JB:       {} +/- {}\n",
+      f_Q2_jb_res->Parameter(1), f_Q2_jb_res->Error(1));
+  } else return 1;
+  if (f_Q2_da_res == 0) {
+    fmt::print(" - DA:       {} +/- {}\n",
+      f_Q2_da_res->Parameter(1), f_Q2_da_res->Error(1));
+  } else return 1;
   fmt::print("x resolution:\n");
-  fmt::print(" - electron: {} +/- {}\n",
-    f_x_el_res->Parameter(1), f_x_el_res->Error(1));
-  fmt::print(" - sigma:    {} +/- {}\n",
-    f_x_sigma_res->Parameter(1), f_x_sigma_res->Error(1));
-  fmt::print(" - esigma:   {} +/- {}\n",
-    f_x_esigma_res->Parameter(1), f_x_esigma_res->Error(1));
-  fmt::print(" - JB:       {} +/- {}\n",
-    f_x_jb_res->Parameter(1), f_x_jb_res->Error(1));
-  fmt::print(" - DA:       {} +/- {}\n",
-    f_x_da_res->Parameter(1), f_x_da_res->Error(1));
+  if (f_x_el_res == 0) {
+    fmt::print(" - electron: {} +/- {}\n",
+      f_x_el_res->Parameter(1), f_x_el_res->Error(1));
+  } else return 1;
+  if (f_x_sigma_res == 0) {
+    fmt::print(" - sigma:    {} +/- {}\n",
+      f_x_sigma_res->Parameter(1), f_x_sigma_res->Error(1));
+  } else return 1;
+  if (f_x_esigma_res == 0) {
+    fmt::print(" - esigma:   {} +/- {}\n",
+      f_x_esigma_res->Parameter(1), f_x_esigma_res->Error(1));
+  } else return 1;
+  if (f_x_jb_res == 0) {
+    fmt::print(" - JB:       {} +/- {}\n",
+      f_x_jb_res->Parameter(1), f_x_jb_res->Error(1));
+  } else return 1;
+  if (f_x_da_res == 0) {
+    fmt::print(" - DA:       {} +/- {}\n",
+      f_x_da_res->Parameter(1), f_x_da_res->Error(1));
+  } else return 1;
 
   // Plot our histograms.
   // TODO: to start I'm explicitly plotting the histograms, but want to
-- 
GitLab