int BUFFER_pre_build()

in src/buffer.c [260:298]


int BUFFER_pre_build(BUFFER_HANDLE handle, size_t size)
{
    int result;
    if (handle == NULL)
    {
        /* Codes_SRS_BUFFER_07_006: [If handle is NULL or size is 0 then BUFFER_pre_build shall return a nonzero value.] */
        result = MU_FAILURE;
    }
    else if (size == 0)
    {
        /* Codes_SRS_BUFFER_07_006: [If handle is NULL or size is 0 then BUFFER_pre_build shall return a nonzero value.] */
        result = MU_FAILURE;
    }
    else
    {
        BUFFER* b = handle;
        if (b->buffer != NULL)
        {
            /* Codes_SRS_BUFFER_07_007: [BUFFER_pre_build shall return nonzero if the buffer has been previously allocated and is not NULL.] */
            LogError("Failure buffer data is NULL");
            result = MU_FAILURE;
        }
        else
        {
            if ((b->buffer = malloc(size)) == NULL)
            {
                /* Codes_SRS_BUFFER_07_013: [BUFFER_pre_build shall return nonzero if any error is encountered.] */
                LogError("Failure allocating buffer");
                result = MU_FAILURE;
            }
            else
            {
                b->size = size;
                result = 0;
            }
        }
    }
    return result;
}