From d8c2643ceb3128a98c92c099ed9009548e476a22 Mon Sep 17 00:00:00 2001
From: Gabriel Studer <gabriel.studer@unibas.ch>
Date: Mon, 23 Sep 2019 13:34:56 +0200
Subject: [PATCH] always catch exceptions as reference

silences a compiler warning in gcc 8.3 and is a good idea anyway
---
 modules/gui/src/file_loader.cc                     | 14 +++++++-------
 modules/gui/src/python_shell/python_interpreter.cc |  4 ++--
 .../src/python_shell/python_interpreter_worker.cc  |  2 +-
 .../src/python_shell/python_namespace_tree_item.cc |  2 +-
 modules/io/src/mol/mmcif_reader.cc                 |  2 +-
 modules/io/src/mol/pdb_reader.cc                   |  2 +-
 modules/mol/mm/src/ff_reader.cc                    | 12 ++++++------
 modules/seq/base/pymod/export_sequence.cc          | 12 ++++++------
 8 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/modules/gui/src/file_loader.cc b/modules/gui/src/file_loader.cc
index c9d958acf..476c6e89f 100644
--- a/modules/gui/src/file_loader.cc
+++ b/modules/gui/src/file_loader.cc
@@ -126,7 +126,7 @@ void FileLoader::AddToScene(const QString& filename, gfx::GfxObjP obj)
       gfx::Scene::Instance().SetCenter(obj->GetCenter());
     }
   }
-  catch (Error m) {
+  catch (Error& m) {
     FileLoader::HandleError(m, GFX_ADD, filename, obj);
   }
 }
@@ -208,7 +208,7 @@ gfx::GfxObjP FileLoader::TryLoadEntity(const QString& filename, io::EntityIOHand
     try{
       handler = io::IOManager::Instance().FindEntityImportHandler(filename.toStdString());
     }
-    catch(io::IOUnknownFormatException e){
+    catch(io::IOUnknownFormatException& e){
       handler = io::EntityIOHandlerP();
     }
   }
@@ -242,7 +242,7 @@ gfx::GfxObjP FileLoader::TryLoadMap(const QString& filename, io::MapIOHandlerPtr
     try{
       handler = io::IOManager::Instance().FindMapImportHandlerFile(filename.toStdString(),io::UndefinedImageFormat());
     }
-    catch(io::IOUnknownFormatException e){
+    catch(io::IOUnknownFormatException& e){
       handler = io::MapIOHandlerPtr();
     }
   }
@@ -275,7 +275,7 @@ gfx::GfxObjP FileLoader::TryLoadSurface(const QString& filename, io::SurfaceIOHa
     try{
       handler = io::IOManager::Instance().FindSurfaceImportHandler(filename.toStdString(),"auto");
     }
-    catch(io::IOUnknownFormatException e){
+    catch(io::IOUnknownFormatException& e){
       handler = io::SurfaceIOHandlerPtr();
     }
   }
@@ -306,7 +306,7 @@ gfx::GfxObjP FileLoader::TryLoadAlignment(const QString& filename,
     try{
       handler = io::IOManager::Instance().FindAlignmentImportHandler(filename.toStdString(),"auto");
     }
-    catch(io::IOUnknownFormatException e){
+    catch(io::IOUnknownFormatException& e){
       handler = io::SequenceIOHandlerPtr();
     }
   }
@@ -378,7 +378,7 @@ void FileLoader::LoadPDB(const QString& filename, const QString& selection)
     try{
       gfx::Scene::Instance().Add(gfx_ent);
     }
-    catch (Error e) {
+    catch (Error& e) {
       HandleError(e, GFX_ADD, filename, gfx_ent);
     }
     if (gfx::Scene::Instance().GetRootNode()->GetChildCount()==1) {
@@ -391,7 +391,7 @@ void FileLoader::LoadPDB(const QString& filename, const QString& selection)
         gfx::Scene::Instance().Add(gfx_ent);
       }
     }
-    catch (Error e) {
+    catch (Error& e) {
       FileLoader::HandleError(e,GFX_MULTIPLE_ADD,filename);
     }
   }
diff --git a/modules/gui/src/python_shell/python_interpreter.cc b/modules/gui/src/python_shell/python_interpreter.cc
index 8fe84743f..29178f2c0 100644
--- a/modules/gui/src/python_shell/python_interpreter.cc
+++ b/modules/gui/src/python_shell/python_interpreter.cc
@@ -140,12 +140,12 @@ CodeBlockStatus PythonInterpreter::GetCodeBlockStatus(const QString& command)
           String doc=bp::extract<String>(result.attr("__doc__"));
           complete=true;
           status=CODE_BLOCK_COMPLETE;
-        } catch(bp::error_already_set) {
+        } catch(bp::error_already_set&) {
           status=CODE_BLOCK_INCOMPLETE;
           ++i;          
           PyErr_Clear();
         }
-      } catch(bp::error_already_set) {
+      } catch(bp::error_already_set&) {
         status=CODE_BLOCK_ERROR;
         complete=true;
         PyErr_Clear();
diff --git a/modules/gui/src/python_shell/python_interpreter_worker.cc b/modules/gui/src/python_shell/python_interpreter_worker.cc
index 842b1c4dd..5f7fb42a6 100644
--- a/modules/gui/src/python_shell/python_interpreter_worker.cc
+++ b/modules/gui/src/python_shell/python_interpreter_worker.cc
@@ -132,7 +132,7 @@ void PythonInterpreterWorker::run_command_(std::pair<unsigned int,QString> pair)
     error_redirector_->Flush();
     emit Finished(pair.first,true);
     return;
-  }catch(bp::error_already_set){
+  }catch(bp::error_already_set&){
     if(PyErr_ExceptionMatches(PyExc_SystemExit)){
       PyErr_Clear();
       //emit Exit();
diff --git a/modules/gui/src/python_shell/python_namespace_tree_item.cc b/modules/gui/src/python_shell/python_namespace_tree_item.cc
index 5c59e2358..e03444f69 100644
--- a/modules/gui/src/python_shell/python_namespace_tree_item.cc
+++ b/modules/gui/src/python_shell/python_namespace_tree_item.cc
@@ -110,7 +110,7 @@ void PythonNamespaceTreeItem::FetchMore()
     try{
       String keystring=bp::extract<String>(keys[i]);
       child_namespace=namespace_.attr(keystring.c_str());
-    } catch(bp::error_already_set) {
+    } catch(bp::error_already_set&) {
       PyErr_Clear();
     }
     children_.append(new PythonNamespaceTreeItem(child_namespace,
diff --git a/modules/io/src/mol/mmcif_reader.cc b/modules/io/src/mol/mmcif_reader.cc
index a232e3711..3641b2e0d 100644
--- a/modules/io/src/mol/mmcif_reader.cc
+++ b/modules/io/src/mol/mmcif_reader.cc
@@ -597,7 +597,7 @@ void MMCifReader::ParseAndAddAtom(const std::vector<StringRef>& columns)
     if (me.IsValid()) { // unit test
       try {
         editor.AddAltAtomPos(String(1, alt_loc), me, apos);
-      } catch (Error) {
+      } catch (Error&) {
         LOG_INFO("Ignoring atom alt location since there is already an atom "
                  "with name " << aname << ", but without an alt loc");
         return;
diff --git a/modules/io/src/mol/pdb_reader.cc b/modules/io/src/mol/pdb_reader.cc
index a0a5f3b4f..bf0a3a8a0 100644
--- a/modules/io/src/mol/pdb_reader.cc
+++ b/modules/io/src/mol/pdb_reader.cc
@@ -821,7 +821,7 @@ void PDBReader::ParseAndAddAtom(const StringRef& line, int line_num,
     if (me.IsValid()) {
       try {
         editor.AddAltAtomPos(String(1, alt_loc), me, apos, o, b);
-      } catch (Error) {
+      } catch (Error&) {
         LOG_INFO("Ignoring atom alt location since there is already an atom "
                      "with name " << aname << ", but without an alt loc");
         return;
diff --git a/modules/mol/mm/src/ff_reader.cc b/modules/mol/mm/src/ff_reader.cc
index 54d09bd20..c7cb9244d 100644
--- a/modules/mol/mm/src/ff_reader.cc
+++ b/modules/mol/mm/src/ff_reader.cc
@@ -389,32 +389,32 @@ void FFReader::ReadResidueDatabase(const String& basename){
   try{
     data = preprocessor_.Process(basename+".arn");
     this->ParseARN(data);
-  }catch(ost::io::IOException e) { }
+  }catch(ost::io::IOException& e) { }
 
   try{
     data = preprocessor_.Process(basename+".hdb");
     this->ParseHDB(data);
-  }catch(ost::io::IOException e) { }
+  }catch(ost::io::IOException& e) { }
 
   try{
     data = preprocessor_.Process(basename+".n.tdb");
     this->ParseNTDB(data);
-  }catch(ost::io::IOException e) { }
+  }catch(ost::io::IOException& e) { }
 
   try{
     data = preprocessor_.Process(basename+".c.tdb");
     this->ParseCTDB(data);
-  }catch(ost::io::IOException e) { }
+  }catch(ost::io::IOException& e) { }
 
   try{
     data = preprocessor_.Process(basename+".vsd");
     this->ParseVSD(data);
-  }catch(ost::io::IOException e) { }
+  }catch(ost::io::IOException& e) { }
 
   try{
     data = preprocessor_.Process(basename+".r2b");
     this->ParseRtoB(data);
-  }catch(ost::io::IOException e) { }
+  }catch(ost::io::IOException& e) { }
 }
 
 void FFReader::ReadCHARMMPRM(const String& filename){
diff --git a/modules/seq/base/pymod/export_sequence.cc b/modules/seq/base/pymod/export_sequence.cc
index 1919290e7..e8331c7fc 100644
--- a/modules/seq/base/pymod/export_sequence.cc
+++ b/modules/seq/base/pymod/export_sequence.cc
@@ -62,7 +62,7 @@ T do_slice(const T& t, slice& sl) {
     if (start<0) {
       start=t.GetCount()+start;
     }    
-  } catch(error_already_set) {
+  } catch(error_already_set&) {
     PyErr_Clear();
   }
   try {
@@ -70,7 +70,7 @@ T do_slice(const T& t, slice& sl) {
     if (end<0) {
       end=t.GetCount()+end;
     }    
-  } catch(error_already_set) {
+  } catch(error_already_set&) {
     PyErr_Clear();
   }
   return t.Slice(start, end-start);
@@ -96,7 +96,7 @@ String slice_seq(const ConstSequenceHandle& sh, slice& sl) {
     if (start<0) {
       start=sh.GetLength()+start;
     }    
-  } catch(error_already_set) {
+  } catch(error_already_set&) {
     PyErr_Clear();
   }
   try {
@@ -104,7 +104,7 @@ String slice_seq(const ConstSequenceHandle& sh, slice& sl) {
     if (end<0) {
       end=sh.GetLength()+end;
     }
-  } catch(error_already_set) {
+  } catch(error_already_set&) {
     PyErr_Clear();
   }
   String s=sh.GetString();
@@ -118,7 +118,7 @@ AlignedRegion slice_aln(const AlignmentHandle& aln, slice sl) {
     if (start<0) {
       start=aln.GetLength()+start;
     }    
-  } catch(error_already_set) {
+  } catch(error_already_set&) {
     PyErr_Clear();
   }
   try {
@@ -126,7 +126,7 @@ AlignedRegion slice_aln(const AlignmentHandle& aln, slice sl) {
     if (end<0) {
       end=aln.GetLength()+end;
     }
-  } catch(error_already_set) {
+  } catch(error_already_set&) {
     PyErr_Clear();
   }
   return aln.MakeRegion(start, end-start);
-- 
GitLab