# HG changeset patch # User Stefan Monnier # Date 1137983736 0 # Node ID 263a4edafafa206437d31221f33a8cdef31a785d # Parent 83bfe0ee63f6655966d5261ff104295518ca83e2 (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. diff -r 83bfe0ee63f6 -r 263a4edafafa src/alloc.c --- 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);