]> git.eshelyaron.com Git - emacs.git/commitdiff
Don’t optimize insert-file-contents for GNU
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 17 Jul 2025 06:21:23 +0000 (23:21 -0700)
committerEshel Yaron <me@eshelyaron.com>
Thu, 24 Jul 2025 11:53:29 +0000 (13:53 +0200)
* src/fileio.c (Finsert_file_contents):
Remove a microoptimization for GNU/Linux and Android.

(cherry picked from commit 15570b7b95da3461feb51cf1bfe3b6337f5a67cd)

src/fileio.c

index e33ac4afabf1003fbfad05cb695ae1fafa1fc050..a9e5975a2eb1b6bf7930c93752a781d13d12f9ec 100644 (file)
@@ -4187,16 +4187,14 @@ by calling `format-decode', which see.  */)
     if (emacs_fd_fstat (fd, &st) < 0)
       report_file_error ("Input file status", orig_filename);
 
-    /* For backwards compatibility to traditional Unix,
-       POSIX allows the 'read' syscall to succeed on directories.
-       However, we want to fail, to be consistent across platforms
-       and to let callers rely on this function failing on directories.
-       There is no need to check on platforms where it is known that the
-       'read' syscall always fails on a directory.  */
-#if ! (defined GNU_LINUX || defined __ANDROID__)
+    /* Normally there is no need for an S_ISDIR test here,
+       as the first 'read' syscall will fail with EISDIR.
+       However, for backwards compatibility to traditional Unix,
+       POSIX allows 'read' to succeed on directories.
+       So do an explicit S_ISDIR test now, so that callers can rely on
+       this function rejecting directories on all platforms.  */
     if (S_ISDIR (st.st_mode))
       report_file_errno ("Read error", orig_filename, EISDIR);
-#endif
 
     regular = S_ISREG (st.st_mode) != 0;
     bool memory_object = S_TYPEISSHM (&st) || S_TYPEISTMO (&st);