changeset 68350:263a4edafafa

(lisp_align_free): Add an assertion. (make_interval, allocate_string, make_float, allocate_misc, Fmake_symbol (Fcons): If ENABLE_CHECKING is on, check we're not called from a sighandler.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 23 Jan 2006 02:35:36 +0000
parents 83bfe0ee63f6
children 4f0831b0d1ba
files src/alloc.c
diffstat 1 files changed, 19 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/alloc.c	Mon Jan 23 01:30:55 2006 +0000
+++ b/src/alloc.c	Mon Jan 23 02:35:36 2006 +0000
@@ -1,6 +1,6 @@
 /* Storage allocation and gc for GNU Emacs Lisp interpreter.
    Copyright (C) 1985, 1986, 1988, 1993, 1994, 1995, 1997, 1998, 1999,
-      2000, 2001, 2002, 2003, 2004, 2005  Free Software Foundation, Inc.
+      2000, 2001, 2002, 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -1105,6 +1105,9 @@
 	}
       eassert ((aligned & 1) == aligned);
       eassert (i == (aligned ? ABLOCKS_SIZE : ABLOCKS_SIZE - 1));
+#ifdef HAVE_POSIX_MEMALIGN
+      eassert ((unsigned long)ABLOCKS_BASE (abase) % BLOCK_ALIGN == 0);
+#endif
       free (ABLOCKS_BASE (abase));
     }
   UNBLOCK_INPUT;
@@ -1419,6 +1422,8 @@
 {
   INTERVAL val;
 
+  eassert (!handling_signal);
+
   if (interval_free_list)
     {
       val = interval_free_list;
@@ -1837,6 +1842,8 @@
 {
   struct Lisp_String *s;
 
+  eassert (!handling_signal);
+
   /* If the free-list is empty, allocate a new string_block, and
      add all the Lisp_Strings in it to the free-list.  */
   if (string_free_list == NULL)
@@ -2552,6 +2559,8 @@
 {
   register Lisp_Object val;
 
+  eassert (!handling_signal);
+
   if (float_free_list)
     {
       /* We use the data field for chaining the free list
@@ -2671,6 +2680,8 @@
 {
   register Lisp_Object val;
 
+  eassert (!handling_signal);
+
   if (cons_free_list)
     {
       /* We use the cdr for chaining the free list
@@ -2852,6 +2863,9 @@
   UNBLOCK_INPUT;
 #endif
 
+  /* This gets triggered by code which I haven't bothered to fix.  --Stef  */
+  /* eassert (!handling_signal); */
+
   nbytes = sizeof *p + (len - 1) * sizeof p->contents[0];
   p = (struct Lisp_Vector *) lisp_malloc (nbytes, type);
 
@@ -3145,6 +3159,8 @@
 
   CHECK_STRING (name);
 
+  eassert (!handling_signal);
+
   if (symbol_free_list)
     {
       XSETSYMBOL (val, symbol_free_list);
@@ -3225,6 +3241,8 @@
 {
   Lisp_Object val;
 
+  eassert (!handling_signal);
+
   if (marker_free_list)
     {
       XSETMISC (val, marker_free_list);