aboutsummaryrefslogtreecommitdiff
path: root/src/block.c
diff options
context:
space:
mode:
authorFederico Angelilli <code@fedang.net>2024-07-12 23:08:30 +0200
committerFederico Angelilli <code@fedang.net>2024-07-12 23:08:30 +0200
commitc6dc8e969c84b1980dcebd5dc3a59d112fa61c53 (patch)
tree3ed902af74b7122c5424117b041442a558e35e3c /src/block.c
parentaac1310ed0b9983a4a4a29ac469405d70465c278 (diff)
Start parsing blocks
Diffstat (limited to 'src/block.c')
-rw-r--r--src/block.c12
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], &copy->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);
}