diff --git a/src/ChangeLog b/src/ChangeLog index 0b03069c8d7..ea32a480a6c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,9 @@ 2014-04-08 Daniel Colascione + * alloc.c (sweep_symbols, mark_object): Assert that symbol + function cells contain valid lisp objects. (Modified version of + patch from Dmitry). + * alloc.c (detect_suspicious_free): Split actual stack capturing out into new function for easier breakpoint setting. (note_suspicious_free): New function. diff --git a/src/alloc.c b/src/alloc.c index d22e71bd1a8..15bfbbbb1b7 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -6220,6 +6220,8 @@ mark_object (Lisp_Object arg) break; CHECK_ALLOCATED_AND_LIVE (live_symbol_p); ptr->gcmarkbit = 1; + /* Attempt to catch bogus objects. */ + eassert (valid_lisp_object_p (ptr->function) >= 1); mark_object (ptr->function); mark_object (ptr->plist); switch (ptr->redirect) @@ -6640,6 +6642,8 @@ sweep_symbols (void) { ++num_used; sym->s.gcmarkbit = 0; + /* Attempt to catch bogus objects. */ + eassert (valid_lisp_object_p (sym->s.function) >= 1); } }