Commit cfb2f32e authored by Stefan Monnier's avatar Stefan Monnier
Browse files

(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.
parent f9cd9582
/* 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 @@ lisp_align_free (block)
}
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 @@ make_interval ()
{
INTERVAL val;
eassert (!handling_signal);
if (interval_free_list)
{
val = interval_free_list;
......@@ -1837,6 +1842,8 @@ allocate_string ()
{
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 @@ make_float (float_value)
{
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 @@ DEFUN ("cons", Fcons, Scons, 2, 2, 0,
{
register Lisp_Object val;
eassert (!handling_signal);
if (cons_free_list)
{
/* We use the cdr for chaining the free list
......@@ -2852,6 +2863,9 @@ allocate_vectorlike (len, type)
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 @@ Its value and function definition are void, and its property list is nil. */)
CHECK_STRING (name);
eassert (!handling_signal);
if (symbol_free_list)
{
XSETSYMBOL (val, symbol_free_list);
......@@ -3225,6 +3241,8 @@ allocate_misc ()
{
Lisp_Object val;
eassert (!handling_signal);
if (marker_free_list)
{
XSETMISC (val, marker_free_list);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment