void log_producer_config_add_tag()

in Sources/aliyun-log-c-sdk/log_producer_config.c [281:310]


void log_producer_config_add_tag(log_producer_config * pConfig, const char * key, const char * value)
{
    if(key == NULL || value == NULL)
    {
        return;
    }
    ++pConfig->tagCount;
    if (pConfig->tags == NULL || pConfig->tagCount > pConfig->tagAllocSize)
    {
        if(pConfig->tagAllocSize == 0)
        {
            pConfig->tagAllocSize = 4;
        }
        else
        {
            pConfig->tagAllocSize *= 2;
        }
        log_producer_config_tag * tagArray = (log_producer_config_tag *)malloc(sizeof(log_producer_config_tag) * pConfig->tagAllocSize);
        if (pConfig->tags != NULL)
        {
            memcpy(tagArray, pConfig->tags, sizeof(log_producer_config_tag) * (pConfig->tagCount - 1));
            free(pConfig->tags);
        }
        pConfig->tags = tagArray;
    }
    int32_t tagIndex = pConfig->tagCount - 1;
    pConfig->tags[tagIndex].key = log_sdsnew(key);
    pConfig->tags[tagIndex].value = log_sdsnew(value);

}