if(where>cnt) where=cnt;
if((cnt+1>=acnt)||!array->items)
{
- acnt+=GSA_ALLOC_STEP;
- if(!array->items)
+ if(!array->items || !acnt){
+ acnt=cnt+GSA_ALLOC_STEP;
items=malloc(acnt*sizeof(void*));
- else
+ if(array->items && items)
+ memcpy(items,array->items,cnt*sizeof(void*));
+ }else{
+ if(acnt/4>GSA_ALLOC_STEP)
+ acnt+=acnt/4;
+ else
+ acnt+=GSA_ALLOC_STEP;
items=realloc(array->items,acnt*sizeof(void*));
+ }
if(!items) return -1;
array->alloc_count=acnt;
array->items=items;
void **items=array->items;
void **p;
if(indx>=cnt) return -1;
+ if(cnt && !acnt){
+ p=malloc(cnt*sizeof(void*));
+ if(p){
+ memcpy(p,items,cnt*sizeof(void*));
+ array->alloc_count=acnt=cnt;
+ array->items=items=p;
+ }
+ }
p=items+indx;
array->count=--cnt;
memmove(p,p+1,(items+cnt-p)*sizeof(void *));