X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fplist.c;h=048305ac8514e7cc2995cdf52a4b28f84cb12d26;hp=699db2c6dbc7b454cae187624fec109887a09412;hb=216e7ac3b97aed5a5d65c511dc061c78be90e79d;hpb=09529efcde471127419e141807b83b37077003a0 diff --git a/src/plist.c b/src/plist.c index 699db2c..048305a 100644 --- a/src/plist.c +++ b/src/plist.c @@ -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;