rendered paste bodyint ReadSockData( SOCKET sd_in, char **PtrToData )
{
char *TempPtr;
char *Buffer;
char *BufferInit;
int i = 0;
int j = 0;
int Total_Len = DMA_CHUNK_SIZE;
Buffer = malloc( DMA_CHUNK_SIZE );
ErrorAsserter( 200, (Buffer == NULL), "Unable to Allocate memory" );
i = 0;
BufferInit = Buffer;
while ( recv( sd_in, Buffer, 1, 0) >= 1 )
{
if ( i < DMA_CHUNK_SIZE )
{
i++;
printf ("%c", *Buffer );
Buffer++;
}
else
{
i = 0;
Total_Len += DMA_CHUNK_SIZE;
printf ("\n\n New Chunk Total Len: %d \n\n", Total_Len );
TempPtr = malloc( Total_Len );
ErrorAsserter( 800, (TempPtr == NULL), "Unable to allocate memory" );
memcpy( TempPtr, BufferInit, Total_Len );
Buffer = BufferInit;
free( Buffer );
Buffer = (TempPtr + Total_Len - DMA_CHUNK_SIZE);
BufferInit = TempPtr;
}
}
#ifdef __DEBUG__
printf ("\nReceive complete.\a\n");
#endif
/* Buffer[Total_Len + i] = '\0'; */
j = ( Total_Len + i ) % DMA_CHUNK_SIZE;
if(0 != j)
{
Total_Len = Total_Len - DMA_CHUNK_SIZE + i;
}
*PtrToData = malloc( Total_Len );
ErrorAsserter( 201, (*PtrToData == NULL), "Unable to Allocate memory" );
strncpy( *PtrToData, BufferInit, Total_Len );
*PtrToData[Total_Len] = '\0';
free ( BufferInit ); /* This was the problem*/
#ifdef __DEBUG_ENABLED__
printf ( "\nReceived:\n%s", *PtrToData );
#endif
}