]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix crashes on MS-Windows during dumping
authorEli Zaretskii <eliz@gnu.org>
Sat, 17 Dec 2016 11:08:52 +0000 (13:08 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 17 Dec 2016 11:08:52 +0000 (13:08 +0200)
* src/unexw32.c (get_section_info): Make extra_bss_size be the
maximum of extra_bss_size and extra_bss_size_static.  This avoids
computing the size of the output file smaller than it actually
needs to be, which then causes copy_executable_and_dump_data to
write beyond the requested size of the file mapping, thus relying
on the OS roundup to page boundary to save us from ourselves.  See
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00642.html
for the details.

* lib/stdio-impl.h: Revert the workaround fix of not including
errno.h for MinGW.

lib/stdio-impl.h
src/unexw32.c

index 1972a33ab13ab894913317603f430b5d8ec2bbec..766d6936590f72bca14f5f7c413818a087fdf940 100644 (file)
@@ -26,9 +26,7 @@
 # include <sys/param.h>
 #endif
 
-#ifndef __MINGW32__
 #include <errno.h>                             /* For detecting Plan9.  */
-#endif
 
 #if defined __sferror || defined __DragonFly__ || defined __ANDROID__
   /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */
index f4183dc976fcbd1fee7ef4617e1b8a6514a169fa..54224858a85eb912928172e79b0b48de70a4d30d 100644 (file)
@@ -465,6 +465,7 @@ get_section_info (file_data *p_infile)
       bss_start = min (bss_start, bss_start_static);
       bss_size = max (my_endbss, my_endbss_static) - bss_start;
       bss_section_static = 0;
+      extra_bss_size = max (extra_bss_size, extra_bss_size_static);
       extra_bss_size_static = 0;
     }
 }