]> code.delx.au - gnu-emacs/commitdiff
(file-truename): Don't raise args-out-of-range error
authorMartin Rudalics <rudalics@gmx.at>
Mon, 15 Sep 2008 09:23:45 +0000 (09:23 +0000)
committerMartin Rudalics <rudalics@gmx.at>
Mon, 15 Sep 2008 09:23:45 +0000 (09:23 +0000)
when filename has no separator on windows-nt.  (Bug#982)

lisp/ChangeLog
lisp/files.el

index 4bbc8597270d74c13960211878ede000522cb088..c3c4835ad9eddf14965157ff99633340aa0bb64e 100644 (file)
@@ -1,3 +1,8 @@
+2008-09-15  Martin Rudalics  <rudalics@gmx.at>
+
+       * files.el (file-truename): Don't raise args-out-of-range error
+       when filename has no separator on windows-nt.  (Bug#982)
+
 2008-09-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * diff-mode.el (diff-find-file-name): Rename `batch' to `noprompt' and
index 76e50247d6fb3a901191b12bd2aec16916256fe5..2773c9f14b0a28008cf95396c35ecc3973bbf698 100644 (file)
@@ -856,10 +856,14 @@ containing it, until no links are left at any level.
                   missing rest)
               (if longname
                   (setq filename longname)
-                ;; include the preceding directory separator in the missing
+                ;; Include the preceding directory separator in the missing
                 ;; part so subsequent recursion on the rest works.
                 (setq missing (concat "/" (file-name-nondirectory filename)))
-                (setq rest (substring filename 0 (* -1 (length missing))))
+               (let ((length (length missing)))
+                 (setq rest
+                       (if (> length (length filename))
+                           ""
+                         (substring filename 0 (- length)))))
                 (setq filename (concat (file-truename rest) missing))))))
        (setq done t)))