From 5f52c09ae631a2aa242dea894332dbbab1131bfb Mon Sep 17 00:00:00 2001 From: Andrea Orlati <aorlati@users.noreply.github.com> Date: Wed, 3 Jan 2024 10:53:24 +0100 Subject: [PATCH] fix #822: get rid of the problem related to the NULL pointer (#823) I do not have any clue why this bug come out only now, it should have appeared years ago --- Common/Servers/CalibrationTool/src/ReceiverCallback.cpp | 5 ++++- Common/Servers/FitsWriter/src/ReceiverCallback.cpp | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Common/Servers/CalibrationTool/src/ReceiverCallback.cpp b/Common/Servers/CalibrationTool/src/ReceiverCallback.cpp index 1bd3e02fe..7865f0651 100644 --- a/Common/Servers/CalibrationTool/src/ReceiverCallback.cpp +++ b/Common/Servers/CalibrationTool/src/ReceiverCallback.cpp @@ -41,11 +41,13 @@ int ReceiverCallback::cbReceive(ACE_Message_Block * frame_p) char *buffer; DDWORD headerSize=sizeof(Backends::TDumpHeader);*/ Backends::TDumpHeader *dumpH; + DDWORD totalBytes; if (flowNumber_m==1) { if (m_buffer==NULL) { m_buffer=new char[frame_p->total_length()]; m_bufferLen=frame_p->total_length(); + totalBytes=frame_p->total_length(); m_bufferPointer=0; } else { @@ -53,6 +55,7 @@ int ReceiverCallback::cbReceive(ACE_Message_Block * frame_p) memcpy(newBuff,m_buffer,m_bufferPointer); // save the old buffer; delete []m_buffer; //get rid of the old buffer; m_bufferLen+=frame_p->total_length(); //update the buffer length; + totalBytes=frame_p->total_length(); m_buffer=newBuff; // now keep track of the buffer pointer; } while (frame_p!=NULL) { @@ -74,7 +77,7 @@ int ReceiverCallback::cbReceive(ACE_Message_Block * frame_p) m_bufferLen=0; m_bufferPointer=0; } - m_receivedBytes+=frame_p->total_length(); + m_receivedBytes+=totalBytes; } return 0; } diff --git a/Common/Servers/FitsWriter/src/ReceiverCallback.cpp b/Common/Servers/FitsWriter/src/ReceiverCallback.cpp index fe8ccaa67..665f4a859 100644 --- a/Common/Servers/FitsWriter/src/ReceiverCallback.cpp +++ b/Common/Servers/FitsWriter/src/ReceiverCallback.cpp @@ -44,11 +44,13 @@ int ReceiverCallback::cbReceive(ACE_Message_Block * frame_p) char *buffer; DDWORD headerSize=sizeof(Backends::TDumpHeader);*/ Backends::TDumpHeader *dumpH; + DDWORD totalBytes; if (flowNumber_m==1) { if (m_buffer==NULL) { m_buffer=new char[frame_p->total_length()]; m_bufferLen=frame_p->total_length(); + totalBytes=frame_p->total_length(); m_bufferPointer=0; } else { @@ -56,6 +58,7 @@ int ReceiverCallback::cbReceive(ACE_Message_Block * frame_p) memcpy(newBuff,m_buffer,m_bufferPointer); // save the old buffer; delete []m_buffer; //get rid of the old buffer; m_bufferLen+=frame_p->total_length(); //update the buffer length; + totalBytes=frame_p->total_length(); m_buffer=newBuff; // now keep track of the buffer pointer; } while (frame_p!=NULL) { @@ -76,7 +79,7 @@ int ReceiverCallback::cbReceive(ACE_Message_Block * frame_p) m_bufferLen=0; m_bufferPointer=0; } - m_receivedBytes+=frame_p->total_length(); + m_receivedBytes+=totalBytes; } return 0; } -- GitLab