Scott Frazer <frazer.sc...@gmail.com> wrote:

> On 3/11/11 12:38 PM, Bastien Guerry wrote:
> 
> >>
> >> ---
> >> lisp/org-html.el |    2 +-
> >>   1 files changed, 1 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/lisp/org-html.el b/lisp/org-html.el
> >> index c60c90d..2312b21 100644
> >> --- a/lisp/org-html.el
> >> +++ b/lisp/org-html.el
> >> @@ -2186,7 +2186,7 @@ Possible conversions are set in 
> >> `org-export-html-protect-char-alist'."
> >>         (let ((start 0))
> >>    (while (string-match (car c) s start)
> >>      (setq s (replace-match (cdr c) t t s)
> >> -          start (match-beginning 0)))))
> >> +          start (1+ (match-beginning 0))))))
> >>       s))
> >>
> >>   (defun org-html-expand (string)
> >>
> 
> I think there might be a second bug in that function that I had to fix myself.
> I don't know the proper way to create/submit a patch, but instead of this:
> 
>     (while (setq c (pop cl))
>       (while (string-match (car c) s start)
> 
> I think you need this:
> 
>     (while (setq c (pop cl))
>       (setq start 0)
>       (while (string-match (car c) s start)
> 
> i.e. you need to start over at the beginning of the line each time you go
> through the list of protected chars, or else you'll start from the last
> replacement location.
> 

There is a (let ((start 0))... around the (while (string-match...)..)
and inside the outer loop, so every time the inner loop is finished,
start is recreated and initialized to 0 for the next iteration of the
outer loop. At least, that's the case in latest git.

Nick


Reply via email to