From b07e706dfbe5e3c6331ed5c0957efcdce6369c57 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Fri, 5 Nov 2021 15:18:21 -0600 Subject: [PATCH] [bugfix] do not use RootFromNode when calculating file coordinates, stop upwards search on the first NodeKind_File node --- source/md.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/source/md.c b/source/md.c index 5dab7d3..0654411 100644 --- a/source/md.c +++ b/source/md.c @@ -2975,16 +2975,24 @@ MD_CodeLocFromFileOffset(MD_String8 filename, MD_u8 *base, MD_u64 offset) MD_FUNCTION MD_CodeLoc MD_CodeLocFromNode(MD_Node *node) { - MD_Node *root = MD_RootFromNode(node); - MD_Node *first_tag = root->first_tag; + MD_Node *file_root = MD_NilNode(); + for(MD_Node *parent = node->parent; !MD_NodeIsNil(parent); parent = parent->parent) + { + if(parent->kind == MD_NodeKind_File) + { + file_root = parent; + break; + } + } + MD_Node *first_tag = file_root->first_tag; MD_CodeLoc loc = {0}; if(MD_NodeIsNil(first_tag)) { - loc = MD_CodeLocFromFileOffset(root->string, root->raw_string.str, node->offset); + loc = MD_CodeLocFromFileOffset(file_root->string, file_root->raw_string.str, node->offset); } else { - loc = MD_CodeLocFromFileOffset(root->string, first_tag->raw_string.str, node->offset); + loc = MD_CodeLocFromFileOffset(file_root->string, first_tag->raw_string.str, node->offset); } return loc; }