]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix an obscure bug in fstatat on Windows 9X.
authorEli Zaretskii <eliz@gnu.org>
Mon, 10 Mar 2014 17:26:45 +0000 (19:26 +0200)
committerEli Zaretskii <eliz@gnu.org>
Mon, 10 Mar 2014 17:26:45 +0000 (19:26 +0200)
 src/w32.c (fstatat): Don't add an extra slash if the argument ends
 with a slash: this fails the subsequent call to stat_worker on
 Windows 9X.  Reported by oslsachem <oslsachem@gmail.com>.

src/ChangeLog
src/w32.c

index c383aeaa0a0777ddabe45956ea617fd487688f1b..62ad09eb4c22df9a89faf3f6b533bc36ae616b19 100644 (file)
@@ -1,3 +1,9 @@
+2014-03-10  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (fstatat): Don't add an extra slash if the argument ends
+       with a slash: this fails the subsequent call to stat_worker on
+       Windows 9X.  Reported by oslsachem <oslsachem@gmail.com>.
+
 2014-03-10  Martin Rudalics  <rudalics@gmx.at>
 
        * w32term.c (w32_read_socket): In SIZE_RESTORED case
index 11fb2a72f69cd9d03a4b8ac2c32061dd10e1dc6f..e84c63d674ce20aacdcfc1eb149d765abdfeee61 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -5138,7 +5138,10 @@ fstatat (int fd, char const *name, struct stat *st, int flags)
 
   if (fd != AT_FDCWD)
     {
-      if (_snprintf (fullname, sizeof fullname, "%s/%s", dir_pathname, name)
+      char lastc = dir_pathname[strlen (dir_pathname) - 1];
+
+      if (_snprintf (fullname, sizeof fullname, "%s%s%s",
+                    dir_pathname, IS_DIRECTORY_SEP (lastc) ? "" : "/", name)
          < 0)
        {
          errno = ENAMETOOLONG;