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