Пример #1
0
/*
 * cleans the mb; last function to call if you do not give .buf away with
 * memBufFreeFunc
 */
void
memBufClean(MemBuf * mb)
{
    assert(mb);
    assert(mb->buf);
    assert(!mb->stolen);	/* not frozen */

    memFreeBuf(mb->capacity, mb->buf);
    mb->buf = NULL;
    mb->size = mb->capacity = mb->max_capacity = 0;
}
static int free_data(void *data)
{
	MemBuf * mb = (MemBuf*)data;
	if(NULL != mb && NULL != mb->buf)
	{
		memFreeBuf(mb->capacity, mb->buf);
		memPoolFree(text_mb_pool, mb);
		mb = NULL;
	}
	return 0;
}
Пример #3
0
static void
idnsTcpCleanup(idns_query * q)
{
    if (q->tcp_socket != -1) {
	comm_close(q->tcp_socket);
	q->tcp_socket = -1;
    }
    if (q->tcp_buffer) {
	memFreeBuf(q->tcp_buffer_size, q->tcp_buffer);
	q->tcp_buffer = NULL;
    }
}
Пример #4
0
/* resize a variable sized buffer using best-fit pool */
void *
memReallocBuf(void *oldbuf, size_t net_size, size_t * gross_size)
{
    /* XXX This can be optimized on very large buffers to use realloc() */
    size_t new_gross_size;
    void *newbuf = memAllocBuf(net_size, &new_gross_size);
    if (oldbuf) {
        int data_size = *gross_size;
        if (data_size > net_size)
            data_size = net_size;
        memcpy(newbuf, oldbuf, data_size);
        memFreeBuf(*gross_size, oldbuf);
    }
    *gross_size = new_gross_size;
    return newbuf;
}