int stralloc_shrink (stralloc *sa) { if (sa->a > sa->len) { if (!alloc_re(&sa->s, sa->a, sa->len)) return 0 ; sa->a = sa->len ; } return 1 ; }
static int env_add(char *s) { const char *t; t = env_findeq(s); if (t) env_unsetlen(s,t - s); if (en == ea) { ea += 30; if (!alloc_re((void**)environ, (en + 1) * sizeof(char *),(ea + 1) * sizeof(char *))) { ea = en; return 0; } } environ[en++] = s; environ[en] = 0; return 1; }
int main(void) { char *p1; char *p2; char *p3; unsigned int ind; p1 = alloc(CHUNK); p2 = alloc(CHUNK); p3 = alloc(CHUNK); test_assert(p1); test_assert(p2); test_assert(p3); set(p1, CHUNK); set(p2, CHUNK); set(p3, CHUNK); sp1 = alloc(CHUNK); sp2 = alloc(CHUNK); sp3 = alloc(CHUNK); test_assert(sp1); test_assert(sp2); test_assert(sp3); set(sp1, CHUNK); set(sp2, CHUNK); set(sp3, CHUNK); test_assert(alloc_re((void *) &p1, CHUNK, CHUNK * 2)); test_assert(alloc_re((void *) &p2, CHUNK, CHUNK * 2)); test_assert(alloc_re((void *) &p3, CHUNK, CHUNK * 2)); test_assert(p1[0] == 0x41); test_assert(p2[0] == 0x41); test_assert(p3[0] == 0x41); set(p1, CHUNK * 2); set(p2, CHUNK * 2); set(p3, CHUNK * 2); test_assert(alloc_re((void *) &sp1, CHUNK, CHUNK * 2)); test_assert(alloc_re((void *) &sp2, CHUNK, CHUNK * 2)); test_assert(alloc_re((void *) &sp3, CHUNK, CHUNK * 2)); test_assert(sp1[0] == 0x41); test_assert(sp2[0] == 0x41); test_assert(sp3[0] == 0x41); set(sp1, CHUNK * 2); set(sp2, CHUNK * 2); set(sp3, CHUNK * 2); dealloc(p1); dealloc(p2); dealloc(p3); dealloc(sp1); dealloc(sp2); dealloc(sp3); p1 = alloc_zero(CHUNK); test_assert(p1); for (ind = 0; ind < CHUNK; ++ind) test_assert(p1[ind] == 0); dealloc_null(&p1); test_assert(p1 == 0); return 0; }
int main(void) { char *p1; char *p2; char *p3; alloc_set_alloc(stalloc); alloc_set_dealloc(stdealloc); alloc_set_realloc(strealloc); p1 = alloc(CHUNK); p2 = alloc(CHUNK); p3 = alloc(CHUNK); test_assert(p1); test_assert(p2); test_assert(p3); set(p1, CHUNK); set(p2, CHUNK); set(p3, CHUNK); sp1 = alloc(CHUNK); sp2 = alloc(CHUNK); sp3 = alloc(CHUNK); test_assert(sp1); test_assert(sp2); test_assert(sp3); set(sp1, CHUNK); set(sp2, CHUNK); set(sp3, CHUNK); test_assert(alloc_re((void *) &p1, CHUNK, CHUNK * 2)); test_assert(alloc_re((void *) &p2, CHUNK, CHUNK * 2)); test_assert(alloc_re((void *) &p3, CHUNK, CHUNK * 2)); test_assert(p1[0] == 0x41); test_assert(p2[0] == 0x41); test_assert(p3[0] == 0x41); set(p1, CHUNK * 2); set(p2, CHUNK * 2); set(p3, CHUNK * 2); test_assert(alloc_re((void *) &sp1, CHUNK, CHUNK * 2)); test_assert(alloc_re((void *) &sp2, CHUNK, CHUNK * 2)); test_assert(alloc_re((void *) &sp3, CHUNK, CHUNK * 2)); test_assert(sp1[0] == 0x41); test_assert(sp2[0] == 0x41); test_assert(sp3[0] == 0x41); set(sp1, CHUNK * 2); set(sp2, CHUNK * 2); set(sp3, CHUNK * 2); dealloc(p1); dealloc(p2); dealloc(p3); dealloc(sp1); dealloc(sp2); dealloc(sp3); p1 = alloc(4); test_assert(p1); set(p1, 4); test_assert(p1[0] == 0x41); test_assert(p1[1] == 0x41); test_assert(p1[2] == 0x41); test_assert(p1[3] == 0x41); test_assert(alloc_re((void *) &p1, 4, 8)); test_assert(p1[0] == 0x41); test_assert(p1[1] == 0x41); test_assert(p1[2] == 0x41); test_assert(p1[3] == 0x41); dealloc(p1); return 0; }