src/array_list.c

changeset 708
1caed6c9ba68
parent 699
35b2b99ee523
child 735
b686d0c98c62
equal deleted inserted replaced
707:87eb4bdb2d0e 708:1caed6c9ba68
167 return cxRealloc(al, array, capacity * elem_size); 167 return cxRealloc(al, array, capacity * elem_size);
168 } 168 }
169 169
170 static void cx_arl_destructor(struct cx_list_s *list) { 170 static void cx_arl_destructor(struct cx_list_s *list) {
171 cx_array_list *arl = (cx_array_list *) list; 171 cx_array_list *arl = (cx_array_list *) list;
172
173 char *ptr = arl->data;
174
175 if (list->simple_destructor) {
176 for (size_t i = 0; i < list->size; i++) {
177 cx_invoke_simple_destructor(list, ptr);
178 ptr += list->item_size;
179 }
180 }
181 if (list->advanced_destructor) {
182 for (size_t i = 0; i < list->size; i++) {
183 cx_invoke_advanced_destructor(list, ptr);
184 ptr += list->item_size;
185 }
186 }
187
172 cxFree(list->allocator, arl->data); 188 cxFree(list->allocator, arl->data);
189 cxFree(list->allocator, list);
173 } 190 }
174 191
175 static size_t cx_arl_insert_array( 192 static size_t cx_arl_insert_array(
176 struct cx_list_s *list, 193 struct cx_list_s *list,
177 size_t index, 194 size_t index,

mercurial