END_TEST /*----------------------------------------------------------------------- * Strings */ static void test_strndup(const char *string, size_t size) { const char *copy; copy = cork_strndup(string, size); if (memcmp(string, copy, size) != 0) { fail("cork_strndup failed"); } cork_strfree(copy); copy = cork_xstrndup(string, size); fail_if(copy == NULL, "cork_xstrndup couldn't allocate copy"); if (memcmp(string, copy, size) != 0) { fail("cork_xstrndup failed"); } cork_strfree(copy); }
static void bz_git__free(void *user_data) { struct bz_git_repo *repo = user_data; cork_buffer_done(&repo->slug); cork_strfree(repo->url); cork_strfree(repo->commit); free(repo); }
void vrt_queue_free(struct vrt_queue *q) { unsigned int i; unsigned int value_count = q->value_mask + 1; if (q->name != NULL) { cork_strfree(q->name); } cork_array_done(&q->producers); cork_array_done(&q->consumers); if (q->values != NULL) { for (i = 0; i < value_count; i++) { if (q->values[i] != NULL) { vrt_value_free(q->value_type, q->values[i]); } } cork_cfree(q->values, value_count, sizeof(struct vrt_value *)); } cork_delete(struct vrt_queue, q); }
struct vrt_consumer * vrt_consumer_new(const char *name, struct vrt_queue *q) { struct vrt_consumer *c = cork_new(struct vrt_consumer); memset(c, 0, sizeof(struct vrt_consumer)); c->name = cork_strdup(name); cork_array_init(&c->dependencies); ei_check(vrt_queue_add_consumer(q, c)); c->cursor.value = starting_value; c->last_available_id = starting_value; c->current_id = starting_value; c->eof_count = 0; c->batch_count = 0; c->yield_count = 0; return c; error: if (c->name != NULL) { cork_strfree(c->name); } cork_array_done(&c->dependencies); cork_delete(struct vrt_consumer, c); return NULL; }
void vrt_producer_free(struct vrt_producer *p) { if (p->name != NULL) { cork_strfree(p->name); } if (p->yield != NULL) { vrt_yield_strategy_free(p->yield); } cork_delete(struct vrt_producer, p); }
void vrt_consumer_free(struct vrt_consumer *c) { if (c->name != NULL) { cork_strfree(c->name); } if (c->yield != NULL) { vrt_yield_strategy_free(c->yield); } cork_array_done(&c->dependencies); cork_delete(struct vrt_consumer, c); }
struct vrt_producer * vrt_producer_new(const char *name, unsigned int batch_size, struct vrt_queue *q) { struct vrt_producer *p; unsigned int maximum_batch_size; p = cork_new(struct vrt_producer); memset(p, 0, sizeof(struct vrt_producer)); p->name = cork_strdup(name); ei_check(vrt_queue_add_producer(q, p)); if (batch_size == 0) { batch_size = DEFAULT_BATCH_SIZE; } maximum_batch_size = vrt_queue_size(q) / 4; if (batch_size > maximum_batch_size) { batch_size = maximum_batch_size; } clog_trace("<%s> Batch size is %u", name, batch_size); p->last_produced_id = starting_value; p->last_claimed_id = starting_value; p->batch_size = batch_size; p->yield = NULL; p->batch_count = 0; p->yield_count = 0; return p; error: if (p->name != NULL) { cork_strfree(p->name); } cork_delete(struct vrt_producer, p); return NULL; }