src/array_list.c

changeset 625
a4c4a50c067a
parent 624
b0bdff7d8203
child 626
254cc61c71a0
equal deleted inserted replaced
624:b0bdff7d8203 625:a4c4a50c067a
66 uintptr_t targetaddr = (uintptr_t) *target; 66 uintptr_t targetaddr = (uintptr_t) *target;
67 uintptr_t srcaddr = (uintptr_t) src; 67 uintptr_t srcaddr = (uintptr_t) src;
68 bool repairsrc = targetaddr <= srcaddr 68 bool repairsrc = targetaddr <= srcaddr
69 && srcaddr < targetaddr + cap * elem_size; 69 && srcaddr < targetaddr + cap * elem_size;
70 70
71 /* increase capacity linearly */ 71 /* calculate new capacity (next number divisible by 16) */
72 cap += 16; 72 cap = newsize - (newsize % 16) + 16;
73 assert(cap > newsize);
73 74
74 /* perform reallocation */ 75 /* perform reallocation */
75 void *newmem = reallocator->realloc( 76 void *newmem = reallocator->realloc(
76 *target, cap, elem_size, reallocator 77 *target, cap, elem_size, reallocator
77 ); 78 );

mercurial