]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/STEERBase/AliRefArray.cxx
SetFlag GetFlag lifted to interface
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliRefArray.cxx
index 14fa576f5ff3962604a8d95bea19782330e7d80c..2e6ac9dcc01e1cc40579c285626586b61d26e3be 100644 (file)
@@ -28,6 +28,7 @@ AliRefArray::AliRefArray() : fNElems(0),fRefSize(0),fElems(0),fRefInd(0),fRefBuf
 AliRefArray::AliRefArray(UInt_t nelem,UInt_t depth) : 
   TObject(),fNElems(nelem),fRefSize(depth),fElems(0),fRefInd(0),fRefBuff(0)
 {
+  // constructor
   fNElems = nelem;
   // create array with nelem initial referres
   if (fNElems<1) fNElems = 1;
@@ -42,10 +43,19 @@ AliRefArray::AliRefArray(UInt_t nelem,UInt_t depth) :
  
 //____________________________________________________________________
 AliRefArray::AliRefArray(const AliRefArray& src) :
-  TObject(),fNElems(0),fRefSize(0),fElems(0),fRefInd(0),fRefBuff(0)
+  TObject(src),
+  fNElems(src.fNElems),
+  fRefSize(src.fRefSize),
+  fElems(new Int_t[fNElems]),
+  fRefInd(new UInt_t[fRefSize]),
+  fRefBuff(new UInt_t[fRefSize])
 {
-  // create a copy with useful info (skip unused slots)
-  (*this) = src;
+  //
+  // create a copy 
+  //
+  memcpy(fElems,src.fElems,fNElems*sizeof(Int_t));
+  memcpy(fRefInd,src.fRefInd,fRefSize*sizeof(UInt_t));
+  memcpy(fRefBuff,src.fRefBuff,fRefSize*sizeof(UInt_t));
 }
  
 //____________________________________________________________________
@@ -82,9 +92,9 @@ AliRefArray& AliRefArray::operator=(const AliRefArray& src)
 AliRefArray::~AliRefArray() 
 {
   // destructor
-  delete[] fElems;   fElems = 0;
-  delete[] fRefBuff; fRefBuff = 0;
-  delete[] fRefInd;  fRefInd = 0;
+  delete[] fElems;
+  delete[] fRefBuff;
+  delete[] fRefInd;
 }
 
 //____________________________________________________________________