pe*alloc
[m6w6/ext-psi] / src / plist.c
index 699db2c6dbc7b454cae187624fec109887a09412..048305ac8514e7cc2995cdf52a4b28f84cb12d26 100644 (file)
@@ -60,7 +60,7 @@ struct psi_plist *psi_plist_init_ex(size_t size, void (*dtor)(void *)) {
                size = sizeof(void*);
        }
 
-       list = calloc(1, sizeof(*list) + size);
+       list = pecalloc(1, sizeof(*list) + size, 1);
        list->size = size;
        list->dtor = dtor;
 
@@ -88,7 +88,7 @@ void psi_plist_free(struct psi_plist *list) {
 struct psi_plist *psi_plist_copy(struct psi_plist *list, void (*ctor)(void *))
 {
        size_t i;
-       struct psi_plist *copy = calloc(1, sizeof(*list) + list->size + list->count * list->size);
+       struct psi_plist *copy = pecalloc(1, sizeof(*list) + list->size + list->count * list->size, 1);
 
        *copy = *list;
        if (list->count) {
@@ -113,7 +113,7 @@ void **psi_plist_eles(struct psi_plist *list) {
 
 struct psi_plist *psi_plist_add(struct psi_plist *list, void *ptr) {
        if (list && list->count) {
-               list = realloc(list, sizeof(*list) + list->size + list->count * list->size);
+               list = safe_perealloc(list, list->count + 1, list->size, sizeof(*list), 1);
        }
        if (list) {
                PLIST_CPY(list, PLIST_ELE(list, list->count++), ptr);
@@ -123,7 +123,7 @@ struct psi_plist *psi_plist_add(struct psi_plist *list, void *ptr) {
 
 struct psi_plist *psi_plist_add_r(struct psi_plist *list, size_t num_eles, void **eles) {
        if (list) {
-               list = realloc(list, sizeof(*list) + list->size + (num_eles + list->count) * list->size);
+               list = safe_perealloc(list, list->count + num_eles + 1, list->size, sizeof(*list), 1);
        }
        if (list) {
                memcpy(PLIST_ELE(list, list->count), eles, num_eles * list->size);
@@ -190,7 +190,7 @@ struct psi_plist *psi_plist_ins(struct psi_plist *list, size_t index, void *ptr)
        if (list) {
                new_count = MAX(list->count + 1, index);
                if (new_count) {
-                       list = realloc(list, sizeof(*list) + list->size + new_count * list->size);
+                       list = safe_perealloc(list, new_count + 1, list->size, sizeof(*list), 1);
                }
                if (list) {
                        PLIST_MOV_EXPAND(list, index);
@@ -207,11 +207,9 @@ struct psi_plist *psi_plist_ins_r(struct psi_plist *list, size_t offset_start, s
        if (list) {
                new_count = MAX(offset_start, list->count) + num_eles;
                if (new_count) {
-                       list = realloc(list, sizeof(*list) + list->size + new_count * list->size);
+                       list = safe_perealloc(list, new_count + 1, list->size, sizeof(*list), 1);
                }
                if (list) {
-                       size_t e;
-
                        PLIST_MOV_EXPAND_EX(list, offset_start, num_eles);
                        PLIST_CPY_R(list, PLIST_ELE(list, offset_start), eles, num_eles);
                        list->count = new_count;