Skip to content

Commit f3f4b67

Browse files
committed
Merge branch 'albert-github-feature/issue_11515'
2 parents 886cf1c + 5f4297b commit f3f4b67

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/markdown.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,20 @@ enum class ExplicitPageResult
8989
c=='>' || c==':' || c==',' || \
9090
c==';' || c=='\'' || c=='"' || c=='`')
9191

92-
// is character at position i in data allowed before an emphasis section
92+
// is character c allowed before an emphasis section
9393
#define isOpenEmphChar(c) \
9494
(c=='\n' || c==' ' || c=='\'' || c=='<' || \
9595
c=='>' || c=='{' || c=='(' || c=='[' || \
9696
c==',' || c==':' || c==';')
9797

98+
// test for non breakable space (UTF-8)
99+
#define isUtf8Nbsp(c1,c2) \
100+
(c1==static_cast<char>(0xc2) && c2==static_cast<char>(0xa0))
101+
102+
#define isAllowedEmphStr(data,offset) \
103+
(!(offset>0 && isOpenEmphChar(data.data()[-1])) && \
104+
!(offset>1 && isUtf8Nbsp(data.data()[-2],data.data()[-1])))
105+
98106
// is character at position i in data an escape that prevents ending an emphasis section
99107
// so for example *bla (*.txt) is cool*
100108
#define ignoreCloseEmphChar(c,cn) \
@@ -1117,7 +1125,7 @@ int Markdown::Private::processEmphasis(std::string_view data,size_t offset)
11171125
AUTO_TRACE("data='{}' offset={}",Trace::trunc(data),offset);
11181126
const size_t size = data.size();
11191127

1120-
if ((offset>0 && !isOpenEmphChar(data.data()[-1])) || // invalid char before * or _
1128+
if (isAllowedEmphStr(data,offset) || // invalid char before * or _
11211129
(size>1 && data[0]!=data[1] && !(isIdChar(data[1]) || extraChar(data[1]))) || // invalid char after * or _
11221130
(size>2 && data[0]==data[1] && !(isIdChar(data[2]) || extraChar(data[2])))) // invalid char after ** or __
11231131
{

0 commit comments

Comments
 (0)