in src/log_builder.c [250:275]
void add_tag(log_group_builder* bder, const char* k, size_t k_len, const char* v, size_t v_len)
{
// use only 1 malloc
uint32_t tag_size = sizeof(char) * (k_len + v_len) + uint32_size((uint32_t)k_len) + uint32_size((uint32_t)v_len) + 2;
uint32_t n_buffer = 1 + uint32_size(tag_size) + tag_size;
log_tag * tag = &(bder->grp->tags);
if (tag->now_buffer == NULL || tag->now_buffer_len + n_buffer > tag->max_buffer_len)
{
_adjust_buffer(tag, n_buffer);
}
uint8_t * buf = (uint8_t *)tag->now_buffer;
*buf++ = 0x32;
buf += uint32_pack(tag_size, buf);
*buf++ = 0x0A;
buf += uint32_pack((uint32_t)k_len, buf);
memcpy(buf, k, k_len);
buf += k_len;
*buf++ = 0x12;
buf += uint32_pack((uint32_t)v_len, buf);
memcpy(buf, v, v_len);
buf += v_len;
assert((uint8_t *)tag->now_buffer + n_buffer == buf);
tag->now_buffer = (char *)buf;
tag->now_buffer_len += n_buffer;
bder->loggroup_size += n_buffer;
}