{
wArrayList* arrayList = NULL;
- arrayList = (wArrayList*) malloc(sizeof(wArrayList));
+ arrayList = (wArrayList *)calloc(1, sizeof(wArrayList));
+ if (!arrayList)
+ return NULL;
- if (arrayList)
- {
- arrayList->synchronized = synchronized;
-
- arrayList->size = 0;
- arrayList->capacity = 32;
- arrayList->growthFactor = 2;
+ arrayList->synchronized = synchronized;
+ arrayList->capacity = 32;
+ arrayList->growthFactor = 2;
- arrayList->array = (void**) malloc(sizeof(void*) * arrayList->capacity);
-
- InitializeCriticalSectionAndSpinCount(&arrayList->lock, 4000);
-
- ZeroMemory(&arrayList->object, sizeof(wObject));
- }
+ arrayList->array = (void **)malloc(arrayList->capacity * sizeof(void *));
+ if (!arrayList->array)
+ goto out_free;
+ InitializeCriticalSectionAndSpinCount(&arrayList->lock, 4000);
return arrayList;
+
+out_free:
+ free(arrayList);
+ return NULL;
}
void ArrayList_Free(wArrayList* arrayList)
{
wQueue* queue = NULL;
- queue = (wQueue*) malloc(sizeof(wQueue));
+ queue = (wQueue *)calloc(1, sizeof(wQueue));
+ if (!queue)
+ return NULL;
- if (queue)
- {
- queue->head = 0;
- queue->tail = 0;
- queue->size = 0;
-
- queue->capacity = 32;
- queue->growthFactor = 2;
+ queue->capacity = 32;
+ queue->growthFactor = 2;
- queue->synchronized = synchronized;
+ queue->synchronized = synchronized;
- if (capacity > 0)
- queue->capacity = capacity;
+ if (capacity > 0)
+ queue->capacity = capacity;
- if (growthFactor > 0)
- queue->growthFactor = growthFactor;
+ if (growthFactor > 0)
+ queue->growthFactor = growthFactor;
- queue->array = (void**) malloc(sizeof(void*) * queue->capacity);
- ZeroMemory(queue->array, sizeof(void*) * queue->capacity);
+ queue->array = (void **)calloc(queue->capacity, sizeof(void *));
+ if (!queue->array)
+ goto out_free;
- InitializeCriticalSectionAndSpinCount(&queue->lock, 4000);
- queue->event = CreateEvent(NULL, TRUE, FALSE, NULL);
-
- ZeroMemory(&queue->object, sizeof(wObject));
- }
+ InitializeCriticalSectionAndSpinCount(&queue->lock, 4000);
+ queue->event = CreateEvent(NULL, TRUE, FALSE, NULL);
+ if (!queue->event)
+ goto out_free_array;
return queue;
+
+out_free_array:
+ free(queue->array);
+out_free:
+ free(queue);
+ return NULL;
}
void Queue_Free(wQueue* queue)