From c2338251c19c79a54a343bd276bb30cf5a113ecc Mon Sep 17 00:00:00 2001
From: scott snyder <sss@karma>
Date: Mon, 7 Dec 2020 11:48:56 -0500
Subject: [PATCH] tauRecTools: Fix gcc11 compilation warnings.

Check result of dynamic_cast before dereferencing.
---
 Reconstruction/tauRecTools/Root/BDTHelper.cxx      | 14 ++++++++------
 .../tauRecTools/Root/HelperFunctions.cxx           |  8 +++++---
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/Reconstruction/tauRecTools/Root/BDTHelper.cxx b/Reconstruction/tauRecTools/Root/BDTHelper.cxx
index a5f3261489a..55ff2f163fa 100644
--- a/Reconstruction/tauRecTools/Root/BDTHelper.cxx
+++ b/Reconstruction/tauRecTools/Root/BDTHelper.cxx
@@ -63,13 +63,15 @@ std::vector<TString> BDTHelper::parseString(const TString& str, const TString& d
   
   // split the string with ",", and put them into a vector
   for(size_t i = 0; i < arraySize; ++i) {
-    TString var = dynamic_cast<TObjString*> (objList->At(i))->String();
-    var.ReplaceAll(" ", "");
-    if(var.Contains(":=")) {
-      var=var(var.Index(":=")+2, var.Length()-var.Index(":=")-2);
+    if (auto str = dynamic_cast<TObjString*> (objList->At(i))) {
+      TString var = str->String();
+      var.ReplaceAll(" ", "");
+      if(var.Contains(":=")) {
+        var=var(var.Index(":=")+2, var.Length()-var.Index(":=")-2);
+      }
+      if(0==var.Length()) continue;
+      parsedString.push_back(var);
     }
-    if(0==var.Length()) continue;
-    parsedString.push_back(var);
   }
  
   delete objList;
diff --git a/Reconstruction/tauRecTools/Root/HelperFunctions.cxx b/Reconstruction/tauRecTools/Root/HelperFunctions.cxx
index 1e9088f13b2..d487e29d8cf 100644
--- a/Reconstruction/tauRecTools/Root/HelperFunctions.cxx
+++ b/Reconstruction/tauRecTools/Root/HelperFunctions.cxx
@@ -92,9 +92,11 @@ std::vector<TString> tauRecTools::parseString(const TString& str, const TString&
   std::vector<TString> parsed_strings;
   TObjArray* varList_ar = str.Tokenize(delim);
   for(int i = 0; i != varList_ar->GetEntries(); ++i){
-    TString var = dynamic_cast<TObjString*> (varList_ar->At(i))->String();
-    if(var.Length()==0) continue;
-    parsed_strings.push_back(var);
+    if (auto tos = dynamic_cast<TObjString*> (varList_ar->At(i))) {
+      TString var = tos->String();
+      if(var.Length()==0) continue;
+      parsed_strings.push_back(var);
+    }
   }
   delete varList_ar;
   return parsed_strings;
-- 
GitLab