Important Update:

- CItemBuffer:
  - Rename CItemBufferCore -> CItemBuffer
  - Add item count and GetCount() method
  - Bug fix: Reset LastItem on DeleteAll()
- TimingCore:
  - Bug fix: Handle buffer overflow on 32-bit processors
This commit is contained in:
Charl Wentzel
2017-08-17 10:56:10 +02:00
parent 2b7c49d5bb
commit 8fd04dc9e2
3 changed files with 30 additions and 20 deletions

View File

@@ -16,10 +16,11 @@
//***** Function Prototypes *****//
CItemBufferCore::CItemBufferCore( bool pCopyEntries )
CItemBuffer::CItemBuffer( bool pCopyEntries )
{
// Parameters
CopyEntries = pCopyEntries;
Count = 0;
// Clear Event list
FirstItem = NULL;
@@ -27,14 +28,14 @@ CItemBufferCore::CItemBufferCore( bool pCopyEntries )
}
//---------------------------------------------------------------------------
CItemBufferCore::~ CItemBufferCore()
CItemBuffer::~ CItemBuffer()
{
// Free Event List
DeleteAll();
}
//---------------------------------------------------------------------------
TBufferItem * CItemBufferCore::CreateItem( void * Entry, int Size )
TBufferItem * CItemBuffer::CreateItem( void * Entry, int Size )
{
TBufferItem * BufferItem;
@@ -68,7 +69,7 @@ TBufferItem * CItemBufferCore::CreateItem( void * Entry, int Size )
}
//---------------------------------------------------------------------------
bool CItemBufferCore::DestroyItem( TBufferItem ** BufferItem )
bool CItemBuffer::DestroyItem( TBufferItem ** BufferItem )
{
// Check if valid pointer
if (!BufferItem || !*BufferItem)
@@ -86,7 +87,7 @@ bool CItemBufferCore::DestroyItem( TBufferItem ** BufferItem )
}
//---------------------------------------------------------------------------
bool CItemBufferCore::DestroyEntry( void ** Entry )
bool CItemBuffer::DestroyEntry( void ** Entry )
{
// Verify pointer
if (!Entry || !*Entry)
@@ -100,7 +101,7 @@ bool CItemBufferCore::DestroyEntry( void ** Entry )
}
//---------------------------------------------------------------------------
bool CItemBufferCore::Push( void * Entry, int Size )
bool CItemBuffer::Push( void * Entry, int Size )
{
// Verify pointer
if (!Entry || !Size)
@@ -112,11 +113,12 @@ bool CItemBufferCore::Push( void * Entry, int Size )
// Move Next entry reference
LastItem = &((*LastItem)->NextItem);
Count++;
return true;
}
//---------------------------------------------------------------------------
void * CItemBufferCore::Pop( int * Size )
void * CItemBuffer::Pop( int * Size )
{
void * Entry;
@@ -124,13 +126,11 @@ void * CItemBufferCore::Pop( int * Size )
if ((Entry = Peek( Size ))) {
Delete();
}
// return event
return Entry;
}
//---------------------------------------------------------------------------
void * CItemBufferCore::Peek( int * Size )
void * CItemBuffer::Peek( int * Size )
{
void * Entry;
@@ -149,7 +149,7 @@ void * CItemBufferCore::Peek( int * Size )
}
//---------------------------------------------------------------------------
bool CItemBufferCore::Delete()
bool CItemBuffer::Delete()
{
TBufferItem * BufferItem;
@@ -170,11 +170,12 @@ bool CItemBufferCore::Delete()
DestroyEntry( &(BufferItem->Entry) );
free( BufferItem );
Count--;
return true;
}
//---------------------------------------------------------------------------
void CItemBufferCore::DeleteAll()
void CItemBuffer::DeleteAll()
{
TBufferItem * NextItem;
@@ -184,5 +185,7 @@ void CItemBufferCore::DeleteAll()
DestroyItem( &FirstItem );
FirstItem = NextItem;
}
LastItem = &FirstItem;
Count = 0;
}
//---------------------------------------------------------------------------