static void stb__sbgrowf(void **arr, int increment, int itemsize) { int m = *arr ? 2*stb__sbm(*arr)+increment : increment+1; void *p = realloc(*arr ? stb__sbraw(*arr) : 0, itemsize * m + sizeof(int)*2); assert(p); if (p) { if (!*arr) ((int *) p)[1] = 0; *arr = (void *) ((int *) p + 2); stb__sbm(*arr) = m; } }
static void *stb__sbgrowf(void *arr, int increment, int itemsize) { int dbl_cur = arr ? 2*stb__sbm(arr) : 0; int min_needed = sb_count(arr) + increment; int m = dbl_cur > min_needed ? dbl_cur : min_needed; int *p = realloc(arr ? stb__sbraw(arr) : 0, itemsize * m + sizeof(int)*2); if(p) { if(!arr) { p[1] = 0; } p[0] = m; return p+2; } else { exit(1); return (void *)(2*sizeof(int)); } }
static void *stb__sbgrowf(void *arr, unsigned increment, unsigned itemsize) { unsigned dbl_cur = arr ? 2*stb__sbm(arr) : 0; unsigned min_needed = sb_count(arr) + increment; unsigned m = dbl_cur > min_needed ? dbl_cur : min_needed; unsigned *p; if (arr) { p = HeapReAlloc(GetProcessHeap(), 0, stb__sbraw(arr), itemsize*m + sizeof(unsigned)*2); } else { p = HeapAlloc(GetProcessHeap(), 0, itemsize*m + sizeof(unsigned)*2); } if (p) { if (!arr) { p[1] = 0; } p[0] = m; return p+2; } else { ExitProcess(1); return (void *)(2*sizeof(unsigned)); } }