From 5abe2d0cc236157e4951e508aca98bd0c695731e Mon Sep 17 00:00:00 2001
From: Ansgar Philippsen <ansgar.philippsen@gmail.com>
Date: Thu, 28 Jun 2012 17:01:00 -0400
Subject: [PATCH] fix for previous commit 81d57f7860289fc6, putting
 geom::Invert calls into try block

---
 modules/gfx/src/scene.cc          | 14 ++++++++++----
 modules/mol/base/src/transform.cc |  8 +++++++-
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/modules/gfx/src/scene.cc b/modules/gfx/src/scene.cc
index 5ade15ded..0b619af75 100644
--- a/modules/gfx/src/scene.cc
+++ b/modules/gfx/src/scene.cc
@@ -2020,10 +2020,16 @@ void Scene::stereo_projection(int view)
   }
 
   // TODO: generate both directly from near/far/fov
-  float pm[16];
-  glGetFloatv(GL_PROJECTION_MATRIX,pm);
-  pmat_=geom::Transpose(geom::Mat4(pm));
-  ipmat_=geom::Invert(pmat_);
+  try {
+    float pm[16];
+    glGetFloatv(GL_PROJECTION_MATRIX,pm);
+    pmat_=geom::Transpose(geom::Mat4(pm));
+    ipmat_=geom::Invert(pmat_);
+  } catch (geom::GeomException& e) {
+    LOG_WARNING("caught GeomException in Scene::stereo_projection: " << e.what());
+    pmat_=geom::Mat4();
+    ipmat_=geom::Mat4();
+  }
 }
 
 void Scene::render_stereo()
diff --git a/modules/mol/base/src/transform.cc b/modules/mol/base/src/transform.cc
index 560216cc2..cb76e7196 100644
--- a/modules/mol/base/src/transform.cc
+++ b/modules/mol/base/src/transform.cc
@@ -22,6 +22,7 @@
 #include <ost/info/info.hh>
 #include <ost/info/geom_info_conversion.hh>
 #endif
+#include <ost/log.hh>
 #include "transform.hh"
 
 namespace ost { 
@@ -203,7 +204,12 @@ void Transform::update_tm()
                0.0,0.0,0.0,1.0);
   ttm_ = Transpose(tm_);
   // TODO: calculate from rot, cen and trans
-  itm_ = Invert(tm_);
+  try {
+    itm_ = Invert(tm_);
+  } catch (GeomException& e) {
+    LOG_WARNING("caught GeomException in Transform::update_tm: " << e.what());
+    itm_=geom::Mat4();
+  }
 }
 
 void Transform::update_components()
-- 
GitLab