]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/UPGRADE/AliITSUSDigit.cxx
Track labels array overrun protection
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUSDigit.cxx
index 89f983040916284e805ba3d66187c1d0f9a9e972..1ddba73a7374b26574f4819aac314e651b89cc91 100644 (file)
@@ -162,19 +162,20 @@ void AliITSUSDigit::AddSignal(Int_t track,Int_t hit,Double_t signal)
   }
   //
   // new entry add it in order.
-  // if this signal is <= smallest then don't add it.
-  if (fNTracks==(kBuffSize-1) && signal <= fSignal[kBuffSize-1]) return;
+  if (fNTracks==(kBuffSize-1) && signal<=fSignal[kBuffSize-1]) return;   // if this signal is <= smallest then don't add it.
   //
   for (i=fNTracks;i--;) {
-    if (signal > fSignal[i]) {
-      fSignal[i+1] = fSignal[i];
-      fTrack[i+1]  = fTrack[i];
-      fHits[i+1]   = fHits[i];
+    if (signal > fSignal[i]) { // shift smaller signals to the end of the list
+      if (i<kBuffSize-2) {     // (if there is a space...)
+       fSignal[i+1] = fSignal[i];
+       fTrack[i+1]  = fTrack[i];
+       fHits[i+1]   = fHits[i];
+      }
     } else {
       fSignal[i+1] = signal;
       fTrack[i+1]  = track;
       fHits[i+1]   = hit;
-      fNTracks++;
+      if (fNTracks<kBuffSize-1) fNTracks++;
       return; // put it in the right place, now exit.
     } //  end if
   } // end if; end for i