diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/highlighters.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/highlighters.cc b/src/highlighters.cc index 41953aa4..864c7449 100644 --- a/src/highlighters.cc +++ b/src/highlighters.cc @@ -1581,6 +1581,14 @@ struct ReferenceHighlighter : Highlighter private: void do_highlight(HighlightContext context, DisplayBuffer& display_buffer, BufferRange range) override { + static Vector<std::pair<StringView, BufferRange>> running_refs; + const std::pair<StringView, BufferRange> desc{m_name, range}; + if (contains(running_refs, desc)) + return write_to_debug_buffer(format("highlighting recursion detected with ref to {}", m_name)); + + running_refs.push_back(desc); + auto pop_desc = on_scope_end([] { running_refs.pop_back(); }); + try { DefinedHighlighters::instance().get_child(m_name).highlight(context, display_buffer, range); |
