Пример #1
0
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 ;
}
Пример #2
0
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;
}
Пример #3
0
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;
}
Пример #4
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;
}