From b9ab94a80c0c5de5587fffe0bfa679075bdb26bf Mon Sep 17 00:00:00 2001
From: Federico Montesino Pouzols <federico.montesino-pouzols@stfc.ac.uk>
Date: Mon, 16 Feb 2015 10:42:42 +0000
Subject: [PATCH] fix 1076308, exception and only if proton_log really used, re
 #10602

---
 .../Framework/DataHandling/src/LoadNexusLogs.cpp    | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/Code/Mantid/Framework/DataHandling/src/LoadNexusLogs.cpp b/Code/Mantid/Framework/DataHandling/src/LoadNexusLogs.cpp
index 37f2e213141..ebbde7d28c0 100644
--- a/Code/Mantid/Framework/DataHandling/src/LoadNexusLogs.cpp
+++ b/Code/Mantid/Framework/DataHandling/src/LoadNexusLogs.cpp
@@ -133,9 +133,6 @@ void LoadNexusLogs::exec() {
   // the code below will allow current SANS2D files to load
   if (workspace->mutableRun().hasProperty("proton_log")) {
     std::vector<int> event_frame_number;
-    Kernel::TimeSeriesProperty<double> *plog =
-        dynamic_cast<Kernel::TimeSeriesProperty<double> *>(
-            workspace->mutableRun().getProperty("proton_log"));
     this->getLogger().notice()
         << "Using old ISIS proton_log and event_frame_number indirection..."
         << std::endl;
@@ -167,15 +164,19 @@ void LoadNexusLogs::exec() {
     file.openPath("/" + entry_name);
     if (!event_frame_number.empty()) // ISIS indirection - see above comments
     {
+      Kernel::TimeSeriesProperty<double> *plog =
+          dynamic_cast<Kernel::TimeSeriesProperty<double> *>(
+              workspace->mutableRun().getProperty("proton_log"));
+      if (!plog)
+        throw std::runtime_error("Could not cast (interpret) proton_log as a time "
+                                 "series property. Cannot continue.");
       Kernel::TimeSeriesProperty<double> *pcharge =
           new Kernel::TimeSeriesProperty<double>("proton_charge");
       std::vector<double> pval;
       std::vector<Mantid::Kernel::DateAndTime> ptime;
       pval.reserve(event_frame_number.size());
       ptime.reserve(event_frame_number.size());
-      std::vector<Mantid::Kernel::DateAndTime> plogt;
-      if (plog)
-        plogt = plog->timesAsVector();
+      std::vector<Mantid::Kernel::DateAndTime> plogt = plog->timesAsVector();
       std::vector<double> plogv = plog->valuesAsVector();
       for (size_t i = 0; i < event_frame_number.size(); ++i) {
         ptime.push_back(plogt[event_frame_number[i]]);
-- 
GitLab