From 5f9d80b2ce73a7e7fb0f4fc16f3ef5fee0cf8105 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Thu, 26 May 2016 22:02:40 +0200 Subject: Bug 751416 - Markdown: > escaped within backticks --- src/markdown.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/markdown.cpp b/src/markdown.cpp index 5b0ede9..84e52ba 100644 --- a/src/markdown.cpp +++ b/src/markdown.cpp @@ -111,19 +111,21 @@ static void processInline(GrowBuf &out,const char *data,int size); static QCString escapeSpecialChars(const QCString &s) { if (s.isEmpty()) return ""; + bool insideQuote=FALSE; GrowBuf growBuf; const char *p=s; - char c; + char c,pc='\0'; while ((c=*p++)) { switch (c) { - case '<': growBuf.addStr("\\<"); break; - case '>': growBuf.addStr("\\>"); break; - case '\\': growBuf.addStr("\\\\"); break; - case '@': growBuf.addStr("\\@"); break; - default: growBuf.addChar(c); break; + case '"': if (pc!='\\') { insideQuote=!insideQuote; } growBuf.addChar(c); break; + case '<': if (!insideQuote) { growBuf.addChar('\\'); } growBuf.addChar('<'); break; + case '>': if (!insideQuote) { growBuf.addChar('\\'); } growBuf.addChar('>'); break; + case '@': if (!insideQuote) { growBuf.addChar('\\'); } growBuf.addChar('@'); break; + default: growBuf.addChar(c); break; } + pc=c; } growBuf.addChar(0); return growBuf.get(); -- cgit v0.12