@@ -305,12 +305,8 @@ typedef struct ILibLinkedListNode_Root
305305 void * Tag ;
306306 struct ILibLinkedListNode * Head ;
307307 struct ILibLinkedListNode * Tail ;
308- void * ExtraMemory ;
309308}ILibLinkedListNode_Root ;
310309
311- const int ILibLinkedListNode_SIZE = sizeof (ILibLinkedListNode );
312- const int ILibLinkedListNodeRoot_Size = sizeof (ILibLinkedListNode_Root );
313-
314310struct ILibReaderWriterLock_Data
315311{
316312 ILibChain_PreSelect Pre ;
@@ -7489,7 +7485,6 @@ void ILibLifeTime_Check(void *LifeTimeMonitorObject, fd_set *readset, fd_set *wr
74897485 int removed ;
74907486 void * EventQueue ;
74917487 long long CurrentTick ;
7492- struct ILibLinkedListNode_Root root ;
74937488 struct LifeTimeMonitorData * EVT , * Temp = NULL ;
74947489 struct ILibLifeTime * LifeTimeMonitor = (struct ILibLifeTime * )LifeTimeMonitorObject ;
74957490
@@ -7514,9 +7509,7 @@ void ILibLifeTime_Check(void *LifeTimeMonitorObject, fd_set *readset, fd_set *wr
75147509 LifeTimeMonitor -> NextTriggerTick = -1 ;
75157510
75167511 // This is an optimization. We are going to create the root of this linked list on the stack instead of the heap.
7517- // This also fixes a crash with malloc returns NULL if this is created in the heap - No idea why this occurs.
7518- memset (& root , 0 , sizeof (struct ILibLinkedListNode_Root ));
7519- EventQueue = (void * )& root ;
7512+ EventQueue = ILibMemory_AllocateA (sizeof (ILibLinkedListNode_Root ));
75207513
75217514 ILibLinkedList_Lock (LifeTimeMonitor -> Reserved );
75227515 ILibLinkedList_Lock (LifeTimeMonitor -> ObjectList );
@@ -7827,10 +7820,8 @@ void* ILibLinkedList_GetNode_Search(void* LinkedList, ILibLinkedList_Comparer co
78277820void * ILibLinkedList_CreateEx (int userMemorySize )
78287821{
78297822 struct ILibLinkedListNode_Root * root ;
7830- void * mem ;
78317823
7832- ILibMemory_Allocate (sizeof (ILibLinkedListNode_Root ), userMemorySize , (void * * )& root , & mem );
7833- root -> ExtraMemory = mem ;
7824+ root = ILibMemory_SmartAllocateEx (sizeof (ILibLinkedListNode_Root ), userMemorySize );
78347825 ILibSpinLock_Init (& (root -> LOCK ));
78357826 return root ;
78367827}
@@ -7861,7 +7852,7 @@ void* ILibLinkedList_GetTag(ILibLinkedList list)
78617852
78627853void * ILibLinkedList_AllocateNodeEx (void * LinkedList , size_t extraSize )
78637854{
7864- void * newNode = ILibMemory_SmartAllocateEx (sizeof (ILibLinkedListNode ), extraSize + ILibMemory_GetExtraMemorySize ((( ILibLinkedListNode_Root * )LinkedList ) -> ExtraMemory ));
7855+ void * newNode = ILibMemory_SmartAllocateEx (sizeof (ILibLinkedListNode ), extraSize + ILibMemory_ExtraSize (( ILibLinkedListNode_Root * )LinkedList ));
78657856 return (newNode );
78667857}
78677858#define ILibLinkedList_AllocateNode (linkedList ) ILibLinkedList_AllocateNodeEx(linkedList, 0)
@@ -7895,7 +7886,7 @@ void* ILibLinkedList_ShallowCopy(void *LinkedList)
78957886*/
78967887void * ILibLinkedList_GetNode_Head (void * LinkedList )
78977888{
7898- return (LinkedList != NULL ? ((struct ILibLinkedListNode_Root * )LinkedList )-> Head : NULL );
7889+ return (ILibMemory_CanaryOK ( LinkedList ) ? ((struct ILibLinkedListNode_Root * )LinkedList )-> Head : NULL );
78997890}
79007891
79017892/*! \fn ILibLinkedList_GetNode_Tail(void *LinkedList)
@@ -7905,7 +7896,7 @@ void* ILibLinkedList_GetNode_Head(void *LinkedList)
79057896*/
79067897void * ILibLinkedList_GetNode_Tail (void * LinkedList )
79077898{
7908- return ((( struct ILibLinkedListNode_Root * )LinkedList )-> Tail );
7899+ return (ILibMemory_CanaryOK ( LinkedList ) ? (( struct ILibLinkedListNode_Root * )LinkedList )-> Tail : NULL );
79097900}
79107901
79117902/*! \fn ILibLinkedList_GetNextNode(void *LinkedList_Node)
@@ -7915,7 +7906,7 @@ void* ILibLinkedList_GetNode_Tail(void *LinkedList)
79157906*/
79167907void * ILibLinkedList_GetNextNode (void * LinkedList_Node )
79177908{
7918- return ((( struct ILibLinkedListNode * )LinkedList_Node )-> Next );
7909+ return (ILibMemory_CanaryOK ( LinkedList_Node ) ? (( struct ILibLinkedListNode * )LinkedList_Node )-> Next : NULL );
79197910}
79207911
79217912/*! \fn ILibLinkedList_GetPreviousNode(void *LinkedList_Node)
@@ -7925,7 +7916,7 @@ void* ILibLinkedList_GetNextNode(void *LinkedList_Node)
79257916*/
79267917void * ILibLinkedList_GetPreviousNode (void * LinkedList_Node )
79277918{
7928- return ((( struct ILibLinkedListNode * )LinkedList_Node )-> Previous );
7919+ return (ILibMemory_CanaryOK ( LinkedList_Node ) ? (( struct ILibLinkedListNode * )LinkedList_Node )-> Previous : NULL );
79297920}
79307921
79317922/*! \fn ILibLinkedList_GetDataFromNode(void *LinkedList_Node)
@@ -7935,7 +7926,7 @@ void* ILibLinkedList_GetPreviousNode(void *LinkedList_Node)
79357926*/
79367927void * ILibLinkedList_GetDataFromNode (void * LinkedList_Node )
79377928{
7938- return (LinkedList_Node != NULL ? (((struct ILibLinkedListNode * )LinkedList_Node )-> Data ) : NULL );
7929+ return (ILibMemory_CanaryOK ( LinkedList_Node ) ? (((struct ILibLinkedListNode * )LinkedList_Node )-> Data ) : NULL );
79397930}
79407931
79417932/*! \fn ILibLinkedList_InsertBefore(void *LinkedList_Node, void *data)
@@ -7946,6 +7937,7 @@ void *ILibLinkedList_GetDataFromNode(void *LinkedList_Node)
79467937*/
79477938void * ILibLinkedList_InsertBefore (void * LinkedList_Node , void * data )
79487939{
7940+ if (!ILibMemory_CanaryOK (LinkedList_Node )) { return (NULL ); }
79497941 struct ILibLinkedListNode_Root * r = ((struct ILibLinkedListNode * )LinkedList_Node )-> Root ;
79507942 struct ILibLinkedListNode * n = (struct ILibLinkedListNode * ) LinkedList_Node ;
79517943 struct ILibLinkedListNode * newNode ;
@@ -7983,6 +7975,7 @@ void* ILibLinkedList_InsertBefore(void *LinkedList_Node, void *data)
79837975*/
79847976void * ILibLinkedList_InsertAfter (void * LinkedList_Node , void * data )
79857977{
7978+ if (!ILibMemory_CanaryOK (LinkedList_Node )) { return (NULL ); }
79867979 struct ILibLinkedListNode_Root * r = ((struct ILibLinkedListNode * )LinkedList_Node )-> Root ;
79877980 struct ILibLinkedListNode * n = (struct ILibLinkedListNode * ) LinkedList_Node ;
79887981 struct ILibLinkedListNode * newNode ;
@@ -8090,6 +8083,7 @@ int ILibLinkedList_Remove_ByData(void *LinkedList, void *data)
80908083*/
80918084void * ILibLinkedList_AddHead (void * LinkedList , void * data )
80928085{
8086+ if (!ILibMemory_CanaryOK (LinkedList )) { return (NULL ); }
80938087 struct ILibLinkedListNode_Root * r = (struct ILibLinkedListNode_Root * )LinkedList ;
80948088 struct ILibLinkedListNode * newNode ;
80958089
@@ -8113,6 +8107,7 @@ void* ILibLinkedList_AddHead(void *LinkedList, void *data)
81138107*/
81148108void * ILibLinkedList_AddTailEx (void * LinkedList , void * data , size_t additionalSize )
81158109{
8110+ if (!ILibMemory_CanaryOK (LinkedList )) { return (NULL ); }
81168111 struct ILibLinkedListNode_Root * r = (struct ILibLinkedListNode_Root * )LinkedList ;
81178112 struct ILibLinkedListNode * newNode ;
81188113
@@ -8130,7 +8125,8 @@ void* ILibLinkedList_AddTailEx(void *LinkedList, void *data, size_t additionalSi
81308125}
81318126void * ILibLinkedList_Node_ResizeAdditional (void * node , size_t additionalSize )
81328127{
8133- size_t baseSize = ILibMemory_GetExtraMemorySize (((ILibLinkedListNode * )node )-> Root -> ExtraMemory );
8128+ if (!ILibMemory_CanaryOK (node )) { return (NULL ); }
8129+ size_t baseSize = ILibMemory_ExtraSize (((ILibLinkedListNode * )node )-> Root );
81348130 ILibLinkedListNode * newNode = ILibMemory_SmartAllocateEx_ResizeExtra (node , baseSize + additionalSize );
81358131 if (newNode != node )
81368132 {
@@ -8184,9 +8180,12 @@ void ILibLinkedList_UnLock(void *LinkedList)
81848180*/
81858181void ILibLinkedList_Destroy (void * LinkedList )
81868182{
8187- struct ILibLinkedListNode_Root * r = (struct ILibLinkedListNode_Root * )LinkedList ;
8188- while (r -> Head != NULL ) ILibLinkedList_Remove (ILibLinkedList_GetNode_Head (LinkedList ));
8189- free (r );
8183+ if (ILibMemory_CanaryOK (LinkedList ))
8184+ {
8185+ struct ILibLinkedListNode_Root * r = (struct ILibLinkedListNode_Root * )LinkedList ;
8186+ while (r -> Head != NULL ) ILibLinkedList_Remove (ILibLinkedList_GetNode_Head (LinkedList ));
8187+ ILibMemory_Free (r );
8188+ }
81908189}
81918190
81928191
@@ -8197,7 +8196,7 @@ void ILibLinkedList_Destroy(void *LinkedList)
81978196*/
81988197long ILibLinkedList_GetCount (void * LinkedList )
81998198{
8200- return ((( struct ILibLinkedListNode_Root * )LinkedList )-> count );
8199+ return (ILibMemory_CanaryOK ( LinkedList ) ? (( struct ILibLinkedListNode_Root * )LinkedList )-> count : 0 );
82018200}
82028201
82038202int ILibLinkedList_GetIndex (void * node )
0 commit comments