diff OrthancStone/Sources/Scene2DViewport/MeasureTrackers.cpp @ 1685:7896aac14587

Protected against usage of dying viewport
author Benjamin Golinvaux <bgo@osimis.io>
date Wed, 25 Nov 2020 12:16:53 +0100
parents 646e581e115b
children 9ac2a65d4172
line wrap: on
line diff
--- a/OrthancStone/Sources/Scene2DViewport/MeasureTrackers.cpp	Wed Nov 25 12:16:33 2020 +0100
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureTrackers.cpp	Wed Nov 25 12:16:53 2020 +0100
@@ -60,12 +60,15 @@
 
     std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
 
-    if (commitResult_)
-      lock->GetController().PushCommand(command_);
-    else
-      command_->Undo();
+    if(lock)
+    {
+      if (commitResult_)
+        lock->GetController().PushCommand(command_);
+      else
+        command_->Undo();
 
-    lock->Invalidate();
+      lock->Invalidate();
+    }
   }
 
   EditMeasureTracker::EditMeasureTracker(boost::weak_ptr<IViewport> viewport,
@@ -108,12 +111,15 @@
 
     std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
 
-    if (commitResult_)
-      lock->GetController().PushCommand(command_);
-    else
-      command_->Undo();
+    if(lock)
+    {
+      if (commitResult_)
+        lock->GetController().PushCommand(command_);
+      else
+        command_->Undo();
 
-    lock->Invalidate();
+      lock->Invalidate();
+    }
   }
 }