From e76aa16c21a5bdb0265bd03f2d95dcdd4c899fe6 Mon Sep 17 00:00:00 2001
From: Shaun Roe <Shaun.Roe@cern.ch>
Date: Mon, 30 Jan 2017 09:38:02 +0100
Subject: [PATCH] fix coverity 111518,111519 (TrkParametersBase-01-02-33)

	* attempt to fix coverity:
111518 23/08/2016 (Medium) Uninitialized scalar field :/build/AtlasOffline-22.0.X/22.0.X/AtlasConditions/rel_5/InstallArea/x86_64-slc6-gcc49-opt/src/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/CurvilinearParametersT.h in function "CurvilinearParametersT"
111519 23/08/2016 (Low) Missing copy constructor :/build/AtlasOffline-22.0.X/22.0.X/AtlasConditions/rel_5/InstallArea/x86_64-slc6-gcc49-opt/src/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.icc in function "ParametersT"
	* tag as TrkParametersBase-01-02-33
---
 .../TrkParametersBase/CurvilinearParametersT.h |  2 +-
 .../TrkParametersBase/ParametersT.icc          | 18 +++++++-----------
 2 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/CurvilinearParametersT.h b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/CurvilinearParametersT.h
index d4ef16823bc..2686f42d8b1 100644
--- a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/CurvilinearParametersT.h
+++ b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/CurvilinearParametersT.h
@@ -122,7 +122,7 @@ namespace Trk
     mutable std::unique_ptr<CurvilinearUVT>  m_curvilinearFrame;  
 
     /** the curvilinear parameters identifier */
-    unsigned int m_cIdentifier;
+    unsigned int m_cIdentifier=0;
   };
 }//end of namespace Trk
 
diff --git a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.icc b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.icc
index 8897736c254..5d62f06cc38 100644
--- a/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.icc
+++ b/Tracking/TrkEvent/TrkParametersBase/TrkParametersBase/ParametersT.icc
@@ -198,7 +198,7 @@ namespace Trk
   // Move constructor
   template<int DIM,class T,class S>
   ParametersT<DIM,T,S>::ParametersT(ParametersT<DIM,T,S>&& rhs):
-    ParametersBase<DIM,T>(std::move(rhs)),
+    ParametersBase<DIM,T>(std::forward<ParametersBase<DIM,T> >(rhs)),
     m_parameters(std::move(rhs.m_parameters)),
     m_covariance(rhs.m_covariance),
     m_position(std::move(rhs.position())),
@@ -219,12 +219,10 @@ namespace Trk
       ParametersBase<DIM,T>::operator=(rhs);
       
       // delete surface
-      if(m_surface && m_surface->isFree())
-	delete m_surface;
+      if(m_surface && m_surface->isFree()) delete m_surface;
       
       // delete the covariance if there
-      if(m_covariance)
-	delete m_covariance;
+      if(m_covariance) delete m_covariance;
     
       // now assign
       m_parameters = rhs.m_parameters;
@@ -246,11 +244,9 @@ namespace Trk
     {
       ParametersBase<DIM,T>::operator=(std::move(rhs));
 
-      if(m_surface && m_surface->isFree())
-	delete m_surface;
+      if(m_surface && m_surface->isFree()) delete m_surface;
       
-      if(m_covariance)
-	delete m_covariance;
+      if(m_covariance) delete m_covariance;
 
       m_parameters = std::move(rhs.m_parameters);
       m_covariance = rhs.m_covariance;
@@ -350,8 +346,8 @@ namespace Trk
     
     // compare covariance 
     if(((covariance() != 0) &&
-	(pCasted->covariance() != 0) &&
-	!covariance()->isApprox(*pCasted->covariance(),tolerance))
+	     (pCasted->covariance() != 0) &&
+	     !covariance()->isApprox(*pCasted->covariance(),tolerance))
        || (!covariance() != !pCasted->covariance()))  // <-- this is: covariance() XOR pCast->covariance()
       return false;
 
-- 
GitLab