LOG_CONTEXT_HANDLE log_context_create()

in v2/src/log_context.c [94:117]


LOG_CONTEXT_HANDLE log_context_create(LOG_CONTEXT_HANDLE parent_context, uint32_t properties_count, uint32_t data_size)
{
    /* Codes_SRS_LOG_CONTEXT_01_001: [ LOG_CONTEXT_CREATE shall allocate memory for the log context. ]*/
    LOG_CONTEXT_HANDLE result =  malloc(sizeof(LOG_CONTEXT) + (sizeof(LOG_CONTEXT_PROPERTY_VALUE_PAIR) * properties_count) + data_size);
    if (result == NULL)
    {
        /* Codes_SRS_LOG_CONTEXT_01_002: [ If any error occurs, LOG_CONTEXT_CREATE shall fail and return NULL. ]*/
        (void)printf("malloc(sizeof(LOG_CONTEXT)) failed, properties_count=%" PRIu32 ", data_size=%" PRIu32 "\r\n",
            properties_count, data_size);
    }
    else
    {
        result->property_value_pairs_ptr = (void*)((uint8_t*)result + sizeof(LOG_CONTEXT));
        result->property_value_pair_count = properties_count;
        result->values_data = (void*)(result->property_value_pairs_ptr + properties_count);
        result->values_data_length = data_size;

        /* Codes_SRS_LOG_CONTEXT_01_014: [ If parent_context is non-NULL, the created context shall copy all the property/value pairs of parent_context. ]*/
        internal_log_context_init_from_parent(result, parent_context);
        /* return as is */
    }

    return result;
}