Skip to content

Commit

Permalink
fix tof compressor-encoder rewind
Browse files Browse the repository at this point in the history
  • Loading branch information
noferini committed Aug 16, 2024
1 parent ed85b4c commit 7bb8651
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,13 @@ class Compressor
/** encoder private functions and data members **/

int encoderSpider(int itrm);
inline void encoderRewind() { mEncoderPointer = reinterpret_cast<uint32_t*>(mEncoderBuffer); };
inline void encoderRewind()
{
mEncoderPointer = reinterpret_cast<uint32_t*>(mEncoderBuffer);
if (mEncoderPointerStart > mEncoderPointer) {
mEncoderPointerStart = mEncoderPointer;
}
};
inline int encoderNext()
{
if (mEncoderPointer + 1 >= mEncoderPointerMax) {
Expand Down
11 changes: 11 additions & 0 deletions Detectors/TOF/compression/src/Compressor.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,17 @@ bool Compressor<RDH, verbose, paranoid>::processHBF()
mErrorCounter++;
}

// before to move to RDH close check we are not already out of buffer (it is the last chance to call rewind and not to store RDH open)
if (mEncoderPointer >= mEncoderPointerMax) {
LOG(error) << "link = " << rdh->feeId << ": beyond the buffer size mEncoderPointer in RDH open = " << mEncoderPointer << " >= "
<< "mEncoderPointerMax = " << mEncoderPointerMax;
long byteOutOfBuffer = mEncoderPointer + rdh->headerSize - mEncoderPointerMax;
LOG(error) << "byte out of buffer = " << byteOutOfBuffer;

encoderRewind();
return true;
}

/** copy RDH close to encoder buffer **/
/** CAREFUL WITH THE PAGE COUNTER **/
if (mEncoderPointer + rdh->headerSize >= mEncoderPointerMax) {
Expand Down

0 comments on commit 7bb8651

Please sign in to comment.