static int test_cpool(void) { test_start("cpool"); cpool_t p; cpool_init(&p, 1, 10240); for (int i = 1; i < 10240; i+=2) { int v = cpool_alloc(&p); test_assert(v >= 1 && v <= 10240); test_assert(cpool_check(&p, v) == false); } cpool_free(&p, 1); int v = cpool_alloc(&p); test_assert(v == 1); cpool_release(&p); return test_success(); }
int coat_free(coat_t *t, int id) { assert(t); if (cpool_check(&t->pool, id)) { // Free but should have been allocated. return -EBADF; } if (t->oat_delete) { cvector_item_t obj = coat_get(t, id); if (!obj) { // No such object. return -EBADF; } t->oat_delete(t, obj); } cvector_set(&t->table, id, (cvector_item_t) NULL); cpool_free(&t->pool, id); return 0; }