From a271a51355dee9dee25210677f9ef43533550951 Mon Sep 17 00:00:00 2001 From: Moskvitin Andrey Date: Tue, 23 Mar 2010 18:36:29 +0300 Subject: [PATCH] fix bug in #'decode-escaped-encoding --- src.lisp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src.lisp b/src.lisp index 8aee812..ba471ca 100644 --- a/src.lisp +++ b/src.lisp @@ -837,13 +837,19 @@ URI ~s contains illegal character ~s at position ~d." (push (if rpos (with-output-to-string (out) (loop for ch across decoded-string - for i from curpos by 3 + with i = curpos do (let ((octet (char-code ch))) - (if (or (null reserved-chars) - (> octet 127) - (= (sbit reserved-chars octet) 0)) - (write-char ch out) - (write-string (subseq string i (+ i 3)) out))))) + (cond + ((or (null reserved-chars) + (> octet 127) + (= (sbit reserved-chars octet) 0)) + (write-char ch out) + (incf i + (* (if (> octet 127) 2 1) + 3))) + (t (write-string (subseq string i (+ i 3)) out) + (incf i 3) + ))))) decoded-string) strs)))) (setf curpos pos)))) -- 1.7.10.4