bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#21454: 25.1.50; `parse-colon-path' fails with file names containing


From: Andreas Schwab
Subject: bug#21454: 25.1.50; `parse-colon-path' fails with file names containing multiple consecutive "/"
Date: Tue, 13 Sep 2016 11:16:28 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

On Sep 13 2016, Tino Calancha <tino.calancha@gmail.com> wrote:

> diff --git a/lisp/files.el b/lisp/files.el
> index 4bd708d..79e5abf 100644
> --- a/lisp/files.el
> +++ b/lisp/files.el
> @@ -672,10 +672,17 @@ parse-colon-path
>   a leading or trailing separator, or two adjacent separators), return
>   nil (meaning `default-directory') as the associated list element."
>     (when (stringp search-path)
> -    (mapcar (lambda (f)
> -           (if (equal "" f) nil
> -             (substitute-in-file-name (file-name-as-directory f))))
> -         (split-string search-path path-separator))))
> +    (let ((spath (substitute-env-vars search-path)))
> +      (mapcar (lambda (f)
> +                (if (equal "" f) nil
> +                  (let ((dir (expand-file-name (file-name-as-directory 
> f))))
> +                    ;; Previous implementation used 
> `substitute-in-file-name'
> +                    ;; which collapse multiple "/" in front.  Do the same 
> for
> +                    ;; backward compatibility.
> +                    (while (and (char-equal ?/ (aref dir 0))
> +                                (char-equal ?/ (aref dir 1)))
> +                      (setq dir (substring dir 1))) dir)))

aref signals an error if dir is too short.  You can also avoid the loop
if you write it as (if (string-match "\\`/+" dir) (substring
dir (1- (match-end 0))) dir).

Andreas.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."





reply via email to

[Prev in Thread] Current Thread [Next in Thread]