From ea58ef61827a8141dc043c9ed12be61ced3875a6 Mon Sep 17 00:00:00 2001
From: Roman Tolchenov <roman.tolchenov@stfc.ac.uk>
Date: Wed, 15 Feb 2017 15:05:47 +0000
Subject: [PATCH] Re #18688. Returned validity checks.

---
 .../MantidWidgets/src/InstrumentView/RotationSurface.cpp    | 6 ++++++
 .../MantidWidgets/src/InstrumentView/UnwrappedSurface.cpp   | 2 ++
 2 files changed, 8 insertions(+)

diff --git a/MantidQt/MantidWidgets/src/InstrumentView/RotationSurface.cpp b/MantidQt/MantidWidgets/src/InstrumentView/RotationSurface.cpp
index fbbecac5db9..7facb3f871c 100644
--- a/MantidQt/MantidWidgets/src/InstrumentView/RotationSurface.cpp
+++ b/MantidQt/MantidWidgets/src/InstrumentView/RotationSurface.cpp
@@ -192,6 +192,8 @@ void RotationSurface::findUVBounds() {
   m_v_max = -DBL_MAX;
   for (size_t i = 0; i < m_unwrappedDetectors.size(); ++i) {
     const UnwrappedDetector &udet = m_unwrappedDetectors[i];
+    if (!udet.isValid())
+      continue;
     if (udet.u < m_u_min)
       m_u_min = udet.u;
     if (udet.u > m_u_max)
@@ -223,6 +225,8 @@ void RotationSurface::findAndCorrectUGap() {
   std::vector<UnwrappedDetector>::const_iterator ud =
       m_unwrappedDetectors.begin();
   for (; ud != m_unwrappedDetectors.end(); ++ud) {
+    if (!ud->isValid())
+      continue;
     double u = ud->u;
     int i = int((u - m_u_min) / bin_width);
     ubins[i] = true;
@@ -259,6 +263,8 @@ void RotationSurface::findAndCorrectUGap() {
 
     std::vector<UnwrappedDetector>::iterator ud = m_unwrappedDetectors.begin();
     for (; ud != m_unwrappedDetectors.end(); ++ud) {
+      if (!ud->isValid())
+        continue;
       double &u = ud->u;
       u = applyUCorrection(u);
     }
diff --git a/MantidQt/MantidWidgets/src/InstrumentView/UnwrappedSurface.cpp b/MantidQt/MantidWidgets/src/InstrumentView/UnwrappedSurface.cpp
index 2f23f573c4f..a7881fe188d 100644
--- a/MantidQt/MantidWidgets/src/InstrumentView/UnwrappedSurface.cpp
+++ b/MantidQt/MantidWidgets/src/InstrumentView/UnwrappedSurface.cpp
@@ -129,6 +129,8 @@ void UnwrappedSurface::cacheAllAssemblies() {
 
   for (size_t i = 0; i < m_unwrappedDetectors.size(); ++i) {
     const UnwrappedDetector &udet = m_unwrappedDetectors[i];
+    if (!udet.isValid())
+      continue;
     // Get the BARE parent (not parametrized) to speed things up.
     auto &detector = m_instrActor->getDetectorByDetID(udet.detID);
     const Mantid::Geometry::IComponent *bareDet = detector.getComponentID();
-- 
GitLab