diff options
author | John MacFarlane <[email protected]> | 2014-11-17 21:35:39 -0800 |
---|---|---|
committer | John MacFarlane <[email protected]> | 2014-11-17 21:43:47 -0800 |
commit | a6c0a1e8b3d2f3456972dad61a435684cac52cb5 (patch) | |
tree | 541e7147baf6b053c967bfae05487c250d1ba3db /src/blocks.c | |
parent | 4a7d4e01348660c8deb71bd55231439a4149ab05 (diff) |
Make parse_inlines add directly to parent.
Previously parse_inlines returned a list of parsed inlines.
This had to be added to the parent, and fix_parents had to be
called to manually add the 'parent' links to the children, and
the 'last_child' link to the parent.
Now parse_inlines takes the parent block as a parameter,
and uses cmark_node_append_child to add the children, so that
the pointers should be properly managed. This avoids the need
for the fix_parents pass.
Diffstat (limited to 'src/blocks.c')
-rw-r--r-- | src/blocks.c | 16 |
1 files changed, 1 insertions, 15 deletions
diff --git a/src/blocks.c b/src/blocks.c index 0e68259..58162b5 100644 --- a/src/blocks.c +++ b/src/blocks.c @@ -283,19 +283,6 @@ typedef struct BlockStack { cmark_node *next_sibling; } block_stack; -static void fix_parents(cmark_node *node) { - cmark_node *cur = node->first_child; - if (cur == NULL) { - return; - } - while (cur->next != NULL) { - cur->parent = node; - cur = cur->next; - } - cur->parent = node; - node->last_child = cur; -} - // Walk through cmark_node and all children, recursively, parsing // string content into inline content where appropriate. static void process_inlines(cmark_node* cur, reference_map *refmap) @@ -308,8 +295,7 @@ static void process_inlines(cmark_node* cur, reference_map *refmap) case NODE_PARAGRAPH: case NODE_ATX_HEADER: case NODE_SETEXT_HEADER: - cur->first_child = parse_inlines(&cur->string_content, refmap); - fix_parents(cur); + parse_inlines(cur, refmap); break; default: |