]> code.delx.au - gnu-emacs/commitdiff
Avoid unnecessary failures of auto-saving after fatal error
authorEli Zaretskii <eliz@gnu.org>
Mon, 11 Jan 2016 16:00:13 +0000 (18:00 +0200)
committerEli Zaretskii <eliz@gnu.org>
Mon, 11 Jan 2016 16:00:13 +0000 (18:00 +0200)
* src/w32.c (map_w32_filename): Avoid non-trivial system calls for
the benefit of FAT volumes if we are called as part of shutting
down due to a fatal error, which probably means we are trying to
auto-save the session.
* src/lread.c (check_obarray): Don't bother making the obarray
valid if we are shutting down due to a fatal error.  This avoids
interfering with auto-saving the crashed session.

src/lread.c
src/w32.c

index e9f3d7da96745f10f21fd1db99be634d55e118bc..25e3ff01d472b6514dea61b1c8cbc9ce88b6979a 100644 (file)
@@ -3720,7 +3720,11 @@ static size_t oblookup_last_bucket_number;
 Lisp_Object
 check_obarray (Lisp_Object obarray)
 {
-  if (!VECTORP (obarray) || ASIZE (obarray) == 0)
+  /* We don't want to signal a wrong-type-argument error when we are
+     shutting down due to a fatal error, and we don't want to hit
+     assertions in VECTORP and ASIZE if the fatal error was during GC.  */
+  if (!fatal_error_in_progress
+      && (!VECTORP (obarray) || ASIZE (obarray) == 0))
     {
       /* If Vobarray is now invalid, force it to be valid.  */
       if (EQ (Vobarray, obarray)) Vobarray = initial_obarray;
index c77ed87b003041bab11f23e4f71025cbadd8bb9f..4770718f5e3009c7dd777335e9f6ef33ba9cc35c 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -3210,7 +3210,8 @@ map_w32_filename (const char * name, const char ** pPath)
       return shortname;
     }
 
-  if (is_fat_volume (name, (const char **)&path)) /* truncate to 8.3 */
+  if (!fatal_error_in_progress /* disable fancy processing during crash */
+      && is_fat_volume (name, (const char **)&path)) /* truncate to 8.3 */
     {
       register int left = 8;   /* maximum number of chars in part */
       register int extn = 0;   /* extension added? */