#include <stdlib.h>

Go to the source code of this file.
Functions | |
| int | cbf_alloc (void **new_block, size_t *new_nelem, size_t elsize, size_t nelem) |
| int | cbf_realloc (void **old_block, size_t *old_nelem, size_t elsize, size_t nelem) |
| int | cbf_free (void **old_block, size_t *old_nelem) |
| int cbf_alloc | ( | void ** | new_block, |
| size_t * | new_nelem, | ||
| size_t | elsize, | ||
| size_t | nelem | ||
| ) |
Definition at line 222 of file cbf_alloc.c.
References CBF_ARGUMENT, and cbf_realloc().
Referenced by cbf_compress_packed(), cbf_copy_string(), cbf_make_compressdata(), cbf_make_context(), cbf_make_file(), cbf_make_handle(), cbf_make_new_node(), cbf_make_node(), and cbf_start_digest().
{
/* Are the arguments valid? */
if (!new_block)
return CBF_ARGUMENT;
/* Initialise */
*new_block = NULL;
if (new_nelem)
*new_nelem = 0;
/* Allocate the memory */
return cbf_realloc (new_block, new_nelem, elsize, nelem);
}
| int cbf_free | ( | void ** | old_block, |
| size_t * | old_nelem | ||
| ) |
Definition at line 249 of file cbf_alloc.c.
References CBF_ARGUMENT.
Referenced by cbf_compress_packed(), cbf_end_digest(), cbf_free_compressdata(), cbf_free_context(), cbf_free_file(), cbf_free_handle(), cbf_free_node(), cbf_free_string(), cbf_make_handle(), cbf_make_new_node(), cbf_make_node(), and cbf_set_children().
{
/* Are the arguments valid? */
if (!old_block)
return CBF_ARGUMENT;
/* Free the memory */
if (*old_block)
free (*old_block);
*old_block = NULL;
if (old_nelem)
*old_nelem = 0;
/* Success */
return 0;
}
| int cbf_realloc | ( | void ** | old_block, |
| size_t * | old_nelem, | ||
| size_t | elsize, | ||
| size_t | nelem | ||
| ) |
Definition at line 133 of file cbf_alloc.c.
References CBF_ALLOC, and CBF_ARGUMENT.
Referenced by cbf_alloc(), cbf_initialise_compressdata(), cbf_set_buffersize(), and cbf_set_children().
{
void *new_block;
/* Are the arguments valid? */
if (!old_block || elsize == 0)
return CBF_ARGUMENT;
/* Is the size alread correct? */
if (old_nelem)
if (*old_nelem == nelem)
return 0;
/* Allocate the memory */
if (nelem > 0)
{
new_block = malloc (nelem * elsize);
if (!new_block)
return CBF_ALLOC;
}
else
new_block = NULL;
/* Copy the old data */
if (old_nelem)
if (*old_block && *old_nelem > 0 && nelem > 0)
{
if (*old_nelem > nelem)
*old_nelem = nelem;
memcpy (new_block, *old_block, *old_nelem * elsize);
}
/* Free the old memory */
if (*old_block)
free (*old_block);
/* Clear the new data */
if (!old_nelem)
memset (new_block, 0, nelem * elsize);
else
if (nelem > 0 && nelem > *old_nelem)
memset (((char *) new_block) + *old_nelem * elsize, 0,
(nelem - *old_nelem) * elsize);
/* Replace the old data */
*old_block = new_block;
if (old_nelem)
*old_nelem = nelem;
/* Success */
return 0;
}
1.7.3