diff src/ChangeLog @ 4880:ae81a2c00f4f

try harder to avoid crashing when debug-printing -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-01-18 Ben Wing <ben@xemacs.org> * lisp.h: * print.c: New variable `in_debug_print'. * alloc.c: * alloc.c (free_managed_lcrecord): If gc_in_progress and in_debug_print, just return instead of crashing. This only happens when the programmer calls debug_print() or a variation inside of a debugger, and is probably already diagnosing a crash. * print.c (struct debug_bindings): * print.c (debug_prin1_exit): * print.c (debug_prin1): At entrance, record the old value of in_debug_print in the debug_bindings, set up an unwind-protect to restore the old value, and set in_debug_print to 1. In the unwind-protect, restore the old value.
author Ben Wing <ben@xemacs.org>
date Mon, 18 Jan 2010 06:05:21 -0600
parents c356806cc933
children a4322ac49e37 a47abe9c47f2
line wrap: on
line diff
--- a/src/ChangeLog	Sat Jan 16 06:50:01 2010 -0600
+++ b/src/ChangeLog	Mon Jan 18 06:05:21 2010 -0600
@@ -1,3 +1,25 @@
+2010-01-18  Ben Wing  <ben@xemacs.org>
+
+	* lisp.h:
+	* print.c:
+	New variable `in_debug_print'.
+	
+	* alloc.c:
+	* alloc.c (free_managed_lcrecord):
+	If gc_in_progress and in_debug_print, just return instead of
+	crashing. This only happens when the programmer calls debug_print()
+	or a variation inside of a debugger, and is probably already
+	diagnosing a crash.
+	
+	* print.c (struct debug_bindings):
+	* print.c (debug_prin1_exit):
+	* print.c (debug_prin1):
+	At entrance, record the old value of in_debug_print in the
+	debug_bindings, set up an unwind-protect to restore the old value,
+	and set in_debug_print to 1.  In the unwind-protect, restore the
+	old value.
+	
+
 2010-01-16  Ben Wing  <ben@xemacs.org>
 
 	* win32.c (mswindows_read_link_1):