- int end_offset = size % BLUESKY_BLOCK_SIZE;
- if (end_offset > 0) {
- memset(&b->data->data[end_offset], 0,
- BLUESKY_BLOCK_SIZE - end_offset);
+ gsize old_size = b->data->len;
+ gsize new_size = size - (blocks - 1) * BLUESKY_BLOCK_SIZE;
+
+ bluesky_string_resize(b->data, new_size);
+
+ if (new_size > old_size) {
+ memset(&b->data->data[old_size], 0, new_size - old_size);