Skip to content

Commit cd6353a

Browse files
committed
Updated ILibLinkedList verification checks
1 parent 7cf439c commit cd6353a

File tree

2 files changed

+21
-26
lines changed

2 files changed

+21
-26
lines changed

microstack/ILibParsers.c

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
314310
struct 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
78277820
void* 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

78627853
void* 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
*/
78967887
void* 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
*/
79067897
void* 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
*/
79167907
void* 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
*/
79267917
void* 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
*/
79367927
void *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
*/
79477938
void* 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
*/
79847976
void* 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
*/
80918084
void* 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
*/
81148108
void* 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
}
81318126
void* 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
*/
81858181
void 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
*/
81988197
long 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

82038202
int ILibLinkedList_GetIndex(void *node)

microstack/ILibParsers.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,7 +1146,6 @@ int ILibIsRunningOnChainThread(void* chain);
11461146
\param user Custom user state object
11471147
*/
11481148
typedef void(*ILibSparseArray_OnValue)(ILibSparseArray sender, int index, void *value, void *user);
1149-
extern const int ILibMemory_SparseArray_CONTAINERSIZE;
11501149
ILibSparseArray ILibSparseArray_CreateWithUserMemory(int numberOfBuckets, ILibSparseArray_Bucketizer bucketizer, int userMemorySize);
11511150
#define ILibSparseArray_Create(numberOfBuckets, bucketizer) ILibSparseArray_CreateWithUserMemory(numberOfBuckets, bucketizer, 0)
11521151
ILibSparseArray ILibSparseArray_CreateEx(ILibSparseArray source);
@@ -1267,9 +1266,6 @@ int ILibIsRunningOnChainThread(void* chain);
12671266
void ILibLinkedList_SetTag(ILibLinkedList list, void *tag);
12681267
void* ILibLinkedList_GetTag(ILibLinkedList list);
12691268
int ILibLinkedList_GetIndex(void *node);
1270-
extern const int ILibLinkedListNode_SIZE;
1271-
extern const int ILibLinkedListNodeRoot_Size;
1272-
12731269

12741270
//! Comparer delegate is called to compare two values. Mimics behavior of .NET IComparer..
12751271
//! obj2 == obj1 : 0

0 commit comments

Comments
 (0)