From 5ffee75cada14b4992ce6e7020abc03d13385be4 Mon Sep 17 00:00:00 2001
From: Hisaya Kurashige <isaya@cern.ch>
Date: Fri, 30 Jan 2015 00:35:28 +0100
Subject: [PATCH] Fix Coverity defects (MuonTGC_Cabling-00-02-11)

        * Tagged as MuonTGC_Cabling-00-02-11
        * Fixed Coverity defects : 11465 11466 11522 11523

2015-01-22  Hisaya Kurashige <Hisaya.Kurashige@cern.ch>
        * Tagged as MuonTGC_Cabling-00-02-10
        * fixing memory leak  (see ATR-9839)

2015-01-18 Jochen Meyer
	* Tagged as MuonTGC_Cabling-00-02-09
	* addressing coverity defects 11257-60

	* Tagged as MuonTGC_Cabling-00-02-08
	* fixing coverity defect 11920
---
 .../MuonTGC_Cabling/TGCCableSSWToROD.h        |  4 +-
 .../MuonTGC_Cabling/TGCCabling.h              |  9 ++++-
 .../MuonTGC_Cabling/TGCDatabaseASDToPP.h      |  3 ++
 .../MuonTGC_Cabling/TGCDatabaseInPP.h         |  3 ++
 .../MuonTGC_Cabling/TGCDatabasePPToSL.h       |  3 ++
 .../MuonTGC_Cabling/TGCDatabaseSLBToROD.h     |  3 ++
 .../src/MuonTGC_CablingSvc.cxx                |  5 ++-
 .../MuonTGC_Cabling/src/TGCCableSSWToROD.cxx  | 22 +++++++++++
 .../MuonTGC_Cabling/src/TGCCabling.cxx        | 37 +++++++++++++++++++
 9 files changed, 85 insertions(+), 4 deletions(-)

diff --git a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCCableSSWToROD.h b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCCableSSWToROD.h
index 63bf4729653..51c96bbed44 100644
--- a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCCableSSWToROD.h
+++ b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCCableSSWToROD.h
@@ -19,13 +19,15 @@ class TGCCableSSWToROD : public TGCCable
 public:
   // Constructor & Destructor
   TGCCableSSWToROD(std::string filename);
+  TGCCableSSWToROD (const TGCCableSSWToROD&);
+  TGCCableSSWToROD& operator=(const TGCCableSSWToROD&);
 
   virtual ~TGCCableSSWToROD(void);
   
   virtual TGCModuleMap* getModule(const TGCModuleId* moduleId) const;
 
 private:
-  TGCCableSSWToROD(void) {}
+  TGCCableSSWToROD(void);
   virtual TGCModuleMap* getModuleIn(const TGCModuleId* rod) const;
   virtual TGCModuleMap* getModuleOut(const TGCModuleId* ssw) const;
   TGCDatabase* database;
diff --git a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCCabling.h b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCCabling.h
index f3811d67f5d..80136eaceeb 100644
--- a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCCabling.h
+++ b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCCabling.h
@@ -33,7 +33,13 @@ class TGCModuleSLB;
 
 class TGCCabling : public TGCCablingBase
 {
-public:
+ private: //hide default constructor, copy constructor and assignment
+  TGCCabling (void);
+  TGCCabling (const TGCCabling&);
+  TGCCabling& operator= (const TGCCabling&);
+
+
+ public:
   // Constructor & Destructor
   TGCCabling(std::string filenameASDToPP,
 	     std::string filenameInPP,
@@ -179,7 +185,6 @@ private:
   TGCCableHPBToSL*  cableHPBToSL;
   TGCCableSLBToSSW* cableSLBToSSW;
   TGCCableSSWToROD* cableSSWToROD;
-  TGCCabling(void) {}
 
   mutable std::map<int, TGCModuleId*> m_slbModuleIdMap; 
   int getIndexFromReadoutWithoutChannel(const TGCIdBase::SideType side,  
diff --git a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabaseASDToPP.h b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabaseASDToPP.h
index 45d4eb2e41f..3825703c809 100644
--- a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabaseASDToPP.h
+++ b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabaseASDToPP.h
@@ -100,6 +100,9 @@ private:
 
   /** This bool variable is used to know the database is common or sector specific */
   bool m_isCommon; 
+
+  /** hidden assignment operator */
+  TGCDatabaseASDToPP & operator=(const TGCDatabaseASDToPP &right);
 };
   
 } // end of namespace
diff --git a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabaseInPP.h b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabaseInPP.h
index b6cf30ef8c3..8cfedb918a2 100644
--- a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabaseInPP.h
+++ b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabaseInPP.h
@@ -67,6 +67,9 @@ private:
   int NIndexDBIn;
   int maxIndexIn[NIndexIn];
   int minIndexIn[NIndexIn];
+
+  /** hidden assignment operator */
+  TGCDatabaseInPP & operator=(const TGCDatabaseInPP &right);
 };
   
 } // end of namespace
diff --git a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabasePPToSL.h b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabasePPToSL.h
index 358ff48d9fd..0f99a6d965b 100644
--- a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabasePPToSL.h
+++ b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabasePPToSL.h
@@ -27,6 +27,9 @@ public:
 private:
   virtual void readDB(void);
   TGCDatabasePPToSL(void) {}
+
+  /** hidden assignment operator */
+  TGCDatabasePPToSL & operator=(const TGCDatabasePPToSL &right);
 };
   
 } // end of namespace
diff --git a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabaseSLBToROD.h b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabaseSLBToROD.h
index f20d4d060a0..473507a5e5d 100644
--- a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabaseSLBToROD.h
+++ b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/MuonTGC_Cabling/TGCDatabaseSLBToROD.h
@@ -28,6 +28,9 @@ public:
 private:
   virtual void readDB(void);
   TGCDatabaseSLBToROD(void) {}
+
+  /** hidden assignment operator */
+  TGCDatabaseSLBToROD & operator=(const TGCDatabaseSLBToROD &right);
 };
   
 } // end of namespace
diff --git a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/MuonTGC_CablingSvc.cxx b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/MuonTGC_CablingSvc.cxx
index 96f6622204d..de51b3bfc6d 100644
--- a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/MuonTGC_CablingSvc.cxx
+++ b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/MuonTGC_CablingSvc.cxx
@@ -859,7 +859,10 @@ bool MuonTGC_CablingSvc::getOfflineIDfromOnlineID(Identifier & offlineId,
       case 21:
 	// T11S
 	channel -= OffsetForT11S;
-	if(channel<=0) return false;
+	if(channel<=0) {
+          delete asdin;
+          return false;
+        }
  	break;
       default:
 	break;
diff --git a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCCableSSWToROD.cxx b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCCableSSWToROD.cxx
index bf2c2e5db7c..572f0a2c6f9 100644
--- a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCCableSSWToROD.cxx
+++ b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCCableSSWToROD.cxx
@@ -17,6 +17,28 @@ TGCCableSSWToROD::TGCCableSSWToROD(std::string filename)
 {
   database = new TGCDatabaseSLBToROD(filename,"SSW ALL");
 }
+
+TGCCableSSWToROD::TGCCableSSWToROD (void)
+  : TGCCable(TGCCable::SSWToROD),
+    database(0)
+{
+}
+
+TGCCableSSWToROD::TGCCableSSWToROD (const TGCCableSSWToROD& right)
+  : TGCCable(TGCCable::SSWToROD),
+    database(0)
+{
+  database = new TGCDatabaseSLBToROD(*dynamic_cast<TGCDatabaseSLBToROD*>(right.database));
+}
+
+TGCCableSSWToROD& TGCCableSSWToROD::operator=(const TGCCableSSWToROD& right)
+{
+  if (this != &right) {
+    delete database;
+    database = new TGCDatabaseSLBToROD(*dynamic_cast<TGCDatabaseSLBToROD*>(right.database));
+  }
+  return *this;
+}
   
 TGCCableSSWToROD::~TGCCableSSWToROD(void)
 {
diff --git a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCCabling.cxx b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCCabling.cxx
index d696b04fdb0..f665b2dc953 100644
--- a/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCCabling.cxx
+++ b/MuonSpectrometer/MuonCablings/MuonTGC_Cabling/src/TGCCabling.cxx
@@ -25,6 +25,43 @@
 namespace MuonTGC_Cabling {
 
 // Constructor & Destructor
+TGCCabling::TGCCabling (void)
+  : TGCCablingBase(),
+    cableInASD(0),
+    cableASDToPP(0),
+    cableInPP(0),
+    cablePPToSLB(0),
+    cableInSLB(0),
+    cableSLBToHPB(0),
+    cableHPBToSL(0),
+    cableSLBToSSW(0),
+    cableSSWToROD(0)
+{
+  // do nothing
+}
+
+TGCCabling::TGCCabling (const TGCCabling&)
+  : TGCCablingBase(),
+    cableInASD(0),
+    cableASDToPP(0),
+    cableInPP(0),
+    cablePPToSLB(0),
+    cableInSLB(0),
+    cableSLBToHPB(0),
+    cableHPBToSL(0),
+    cableSLBToSSW(0),
+    cableSSWToROD(0)
+{
+  // do nothing
+}
+ 
+TGCCabling& TGCCabling::operator= (const TGCCabling&)
+{
+  // do nothing
+  return *this;
+}
+
+
 TGCCabling::TGCCabling(std::string filenameASDToPP,
 		       std::string filenameInPP,
 		       std::string filenamePPToSL,
-- 
GitLab