From 0fa3bc21d2e2d81e57a84e6ccbbe00d5e371179b Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Wed, 5 Aug 2020 15:35:47 +0200 Subject: Fix for markdown emphasis processing regression. Prevent __BLA .... BLA__ from being detected as an emphasis section and causing the wrong output. --- src/markdown.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/markdown.cpp b/src/markdown.cpp index 86727a9..458e295 100644 --- a/src/markdown.cpp +++ b/src/markdown.cpp @@ -159,7 +159,7 @@ int Trace::s_indent = 0; // is character at position i in data an escape that prevents ending an emphasis section // so for example *bla (*.txt) is cool* #define ignoreCloseEmphChar(i) \ - (data[i]=='(' || data[i]=='{' || data[i]=='[' || data[i]=='<' || \ + (data[i]=='(' || data[i]=='{' || data[i]=='[' || (data[i]=='<' && data[i+1]!='/') || \ data[i]=='\\' || \ data[i]=='@') @@ -356,12 +356,13 @@ int Markdown::findEmphasisChar(const char *data, int size, char c, int c_size) { while (i0 && ignoreCloseEmphChar(i-1)) + if (ignoreCloseEmphChar(i-1)) { i++; continue; @@ -430,6 +431,10 @@ int Markdown::findEmphasisChar(const char *data, int size, char c, int c_size) i++; } } + else if (data[i-1]=='<' && data[i]=='/') // html end tag invalidates emphasis + { + return 0; + } else if (data[i]=='\n') // end * or _ at paragraph boundary { i++; -- cgit v0.12