]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix redirection of read when _FORTIFY_SOURCE is defined
authoroscar <oscar@win10-64-vm>
Mon, 23 Sep 2024 21:04:36 +0000 (23:04 +0200)
committerEshel Yaron <me@eshelyaron.com>
Mon, 30 Sep 2024 20:38:26 +0000 (22:38 +0200)
When _FORTIFY_SOURCE is defined mingw-w64 provides an inline definition
of read in io.h.  This makes our previous redirection to sys_read
ineffective.  The prototype of sys_read is now required because we don't
touch the prototype of read.

* nt/inc/ms-w32.h (read): Move the redirection after io.h.  Add prototype
for sys_read (Bug#73444)

(cherry picked from commit e376a27cf27d453f3b1c2728626950d4c4478f48)

nt/inc/ms-w32.h

index 7212e4d2984e6fe039ba5f37dbfd9c7866db593d..4d721244afeb7205f9de58837b279d1ddd2323a9 100644 (file)
@@ -256,8 +256,7 @@ extern void w32_reset_stack_overflow_guard (void);
 #define fopen   sys_fopen
 #define link    sys_link
 #define localtime sys_localtime
-#undef read
-#define read    sys_read
+/* we override read after including io.h, see #73444 */
 #define rename  sys_rename
 #define rmdir   sys_rmdir
 #define select  sys_select
@@ -380,6 +379,11 @@ extern struct tm *localtime_r (time_t const * restrict, struct tm * restrict);
 #define fileno   _fileno
 #endif
 
+/* Here we override CRT read with our own, see #73444 */
+#undef read
+#define read    sys_read
+int sys_read (int, char *, unsigned int);
+
 /* Defines that we need that aren't in the standard signal.h.  */
 #define SIGHUP  1               /* Hang up */
 #define SIGQUIT 3               /* Quit process */