| 397 | } |
| 398 | |
| 399 | static void rec_add_blob(RecordBuilder *r, const uint8_t *data, int len) { |
| 400 | int64_t st = len > 0 ? ((int64_t)len * BLOB_SERIAL_MUL) + BLOB_SERIAL_BASE : 0; |
| 401 | uint8_t vbuf[VARINT_MAX_BYTES]; |
| 402 | int vlen = put_varint(vbuf, st); |
| 403 | dynbuf_append(&r->header, vbuf, vlen); |
| 404 | if (len > 0 && data) { |
| 405 | dynbuf_append(&r->body, data, len); |
| 406 | } |
| 407 | } |
| 408 | |
| 409 | // Finalize: returns the complete record bytes (header_len + header + body). |
| 410 | // Caller must free the returned buffer. |
no test coverage detected