]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fexpand_file_name) [DOS_NT]: Use the root directory
authorEli Zaretskii <eliz@gnu.org>
Wed, 19 Dec 2001 18:55:01 +0000 (18:55 +0000)
committerEli Zaretskii <eliz@gnu.org>
Wed, 19 Dec 2001 18:55:01 +0000 (18:55 +0000)
of the current drive as the fallback for default_directory.

src/fileio.c

index 12d0c358ef592a1980adb6edf4c369a08a283919..ad2d210530df2945f6f2ffbb93dff5a5023fed64 100644 (file)
@@ -1038,7 +1038,23 @@ See also the function `substitute-in-file-name'.  */)
   if (NILP (default_directory))
     default_directory = current_buffer->directory;
   if (! STRINGP (default_directory))
-    default_directory = build_string ("/");
+    {
+#ifdef DOS_NT
+      /* "/" is not considered a root directory on DOS_NT, so using "/"
+        here causes an infinite recursion in, e.g., the following:
+
+            (let (default-directory)
+             (expand-file-name "a"))
+
+        To avoid this, we set default_directory to the root of the
+        current drive.  */
+      extern char *emacs_root_dir (void);
+
+      default_directory = build_string (emacs_root_dir ());
+#else
+      default_directory = build_string ("/");
+#endif
+    }
 
   if (!NILP (default_directory))
     {