BUFFER_HANDLE BUFFER_clone()

in src/buffer.c [639:671]


BUFFER_HANDLE BUFFER_clone(BUFFER_HANDLE handle)
{
    BUFFER_HANDLE result;
    if (handle == NULL)
    {
        result = NULL;
    }
    else
    {
        BUFFER* suppliedBuff = handle;
        BUFFER* b = malloc(sizeof(BUFFER));
        if (b != NULL)
        {
            if (BUFFER_safemalloc(b, suppliedBuff->size) != 0)
            {
                free(b);
                LogError("Failure: allocating temp buffer.");
                result = NULL;
            }
            else
            {
                (void)memcpy(b->buffer, suppliedBuff->buffer, suppliedBuff->size);
                b->size = suppliedBuff->size;
                result = b;
            }
        }
        else
        {
            result = NULL;
        }
    }
    return result;
}