diff src/dumper.c @ 1333:1b0339b048ce

[xemacs-hg @ 2003-03-02 09:38:37 by ben] To: xemacs-patches@xemacs.org PROBLEMS: Include nt/PROBLEMS and update. Add note about incremental linking badness. cmdloop.el, custom.el, dumped-lisp.el, files.el, keydefs.el, keymap.el, lisp-mode.el, make-docfile.el, replace.el, simple.el, subr.el, view-less.el, wid-edit.el: Lots of syncing with FSF 21.2. Use if-fboundp in wid-edit.el. New file newcomment.el from FSF. internals/internals.texi: Fix typo. (Build-Time Dependencies): New node. PROBLEMS: Delete. config.inc.samp, xemacs.mak: Eliminate HAVE_VC6, use SUPPORT_EDIT_AND_CONTINUE in its place. No incremental linking unless SUPPORT_EDIT_AND_CONTINUE, since it can cause nasty crashes in pdump. Put warnings about this in config.inc.samp. Report the full compile flags used for src and lib-src in the Installation output. alloc.c, lisp.h, ralloc.c, regex.c: Use ALLOCA() in regex.c to avoid excessive stack allocation. Also fix subtle problem with REL_ALLOC() -- any call to malloc() (direct or indirect) may relocate rel-alloced data, causing buffer text to shift. After any such call, regex must update all its pointers to such data. Add a system, when ERROR_CHECK_MALLOC, whereby regex.c indicates all the places it is prepared to handle malloc()/realloc()/free(), and any calls anywhere in XEmacs outside of this will trigger an abort. alloc.c, dialog-msw.c, eval.c, event-stream.c, general-slots.h, insdel.c, lisp.h, menubar-msw.c, menubar-x.c: Change *run_hook*_trapping_problems to take a warning class, not a string. Factor out code to issue warnings, add flag to call_trapping_problems() to postpone warning issue, and make *run_hook*_trapping_problems issue their own warnings tailored to the hook, postponed in the case of safe_run_hook_trapping_problems() so that the appropriate message can be issued about resetting to nil only when not `quit'. Make record_unwind_protect_restoring_int() non-static. dumper.c: Issue notes about incremental linking problems under Windows. fileio.c: Mule-ize encrypt/decrypt-string code. text.h: Spacing changes.
author ben
date Sun, 02 Mar 2003 09:38:54 +0000
parents e22b0213b713
children 88a2f43560bf
line wrap: on
line diff
--- a/src/dumper.c	Sun Mar 02 02:18:12 2003 +0000
+++ b/src/dumper.c	Sun Mar 02 09:38:54 2003 +0000
@@ -1,7 +1,7 @@
 /* Portable data dumper for XEmacs.
    Copyright (C) 1999-2000 Olivier Galibert
    Copyright (C) 2001 Martin Buchholz
-   Copyright (C) 2001, 2002 Ben Wing.
+   Copyright (C) 2001, 2002, 2003 Ben Wing.
 
 This file is part of XEmacs.
 
@@ -410,6 +410,20 @@
 }
 
 static void
+pdump_unsupported_dump_type (enum memory_description_type type,
+			     int do_backtrace)
+{
+  stderr_out ("Unsupported dump type : %d\n", type);
+#ifdef WIN32_NATIVE
+  stderr_out ("Are you compiling with SUPPORT_EDIT_AND_CONTINUE?\n");
+  stderr_out ("See the PROBLEMS file.\n");
+#endif
+  if (do_backtrace)
+    pdump_backtrace ();
+  abort ();
+}
+
+static void
 pdump_bump_depth (void)
 {
   int me = pdump_depth++;
@@ -545,9 +559,7 @@
 	  break;
 
 	default:
-	  stderr_out ("Unsupported dump type : %d\n", desc1->type);
-	  pdump_backtrace ();
-	  abort ();
+	  pdump_unsupported_dump_type (desc1->type, 1);
 	}
     }
 }
@@ -807,8 +819,7 @@
 	      break;
 
 	    default:
-	      stderr_out ("Unsupported dump type : %d\n", desc1->type);
-	      abort ();
+	      pdump_unsupported_dump_type (desc1->type, 0);
 	    }
 	}
     }
@@ -942,8 +953,7 @@
 	  break;
 
 	default:
-	  stderr_out ("Unsupported dump type : %d\n", desc1->type);
-	  abort ();
+	  pdump_unsupported_dump_type (desc1->type, 0);
 	}
     }
 }
@@ -997,8 +1007,10 @@
   pdump_static_pointer *data = alloca_array (pdump_static_pointer, count);
   for (i = 0; i < count; i++)
     {
-      data[i].address = (char **) Dynarr_atp (pdump_root_struct_ptrs, i)->ptraddress;
-      data[i].value   = (char *) pdump_get_entry (* data[i].address)->save_offset;
+      data[i].address =
+	(char **) Dynarr_atp (pdump_root_struct_ptrs, i)->ptraddress;
+      data[i].value   =
+	(char *) pdump_get_entry (* data[i].address)->save_offset;
     }
   PDUMP_ALIGN_OUTPUT (pdump_static_pointer);
   retry_fwrite (data, sizeof (pdump_static_pointer), count, pdump_out);