Fix escaping with surrounds - smu - smu - simple markup (Markdown) processor (fork, fixes + features)
 (HTM) git clone git://git.codemadness.org/smu
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit b8bb25f4a7a08c5cecb21abab3835b25a079c7ec
 (DIR) parent 1df23c38824a74849c176a5a3bd54d9f1dba8817
 (HTM) Author: Steven Dee <steve@smartercode.net>
       Date:   Sat, 22 Jun 2013 15:59:28 -0400
       
       Fix escaping with surrounds
       
       When we assigned stop = strstr(start, search), we'd grab the first
       match even if it was escaped. Instead, we update stop as we go.
       
       Diffstat:
         M smu.c                               |       6 ++++--
         M testdoc                             |       2 ++
       
       2 files changed, 6 insertions(+), 2 deletions(-)
       ---
 (DIR) diff --git a/smu.c b/smu.c
       @@ -449,10 +449,12 @@ dosurround(const char *begin, const char *end, int newblock) {
                        start = begin + l;
                        p = start - 1;
                        do {
       +                        stop = p;
                                p = strstr(p + 1, surround[i].search);
                        } while(p && p[-1] == '\\');
       -                if(!p || p >= end ||
       -                                !(stop = strstr(start, surround[i].search)) || stop >= end)
       +                if (p && p[-1] != '\\')
       +                        stop = p;
       +                if(!stop || stop < start || stop >= end)
                                continue;
                        fputs(surround[i].before, stdout);
                        if(surround[i].process)
 (DIR) diff --git a/testdoc b/testdoc
       @@ -7,6 +7,8 @@ simple tests
        first paragraph.
        testing surround: _emph_ then **strong** and `code`.
        
       +`\`escaped backticks\``.
       +
        `x = *y * 6;`
        
        horizontal rule: