diff options
Diffstat (limited to 'src/block.c')
| -rw-r--r-- | src/block.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/block.c b/src/block.c index 2b31de8..bfe2ec5 100644 --- a/src/block.c +++ b/src/block.c @@ -22,7 +22,7 @@ void block_update(block_t *block) if (block->type == BLOCK_GROUP) { for (int i = 0; i < block->group.n_children; i++) - block_update(&block->group.children[i]); + block_update(block->group.children[i]); } } @@ -36,10 +36,12 @@ void block_copy(block_t *copy, const block_t *block) if (block->type == BLOCK_TEXT) { copy->text.text = strcopy(block->text.text); } else if (block->type == BLOCK_GROUP) { - copy->group.children = calloc(block->group.n_children, sizeof(block_t)); + copy->group.children = calloc(block->group.n_children, sizeof(block_t *)); - for (int i = 0; i < block->group.n_children; i++) - block_copy(&block->group.children[i], ©->group.children[i]); + for (int i = 0; i < block->group.n_children; i++) { + block->group.children[i] = malloc(sizeof(block_t)); + block_copy(block->group.children[i], copy->group.children[i]); + } } } @@ -51,7 +53,7 @@ void block_free(block_t *block) free(block->text.text); } else if (block->type == BLOCK_GROUP) { for (int i = 0; i < block->group.n_children; i++) - block_free(&block->group.children[i]); + block_free(block->group.children[i]); free(block->group.children); } |
