aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniel Colascione2014-04-03 02:50:58 -0700
committerDaniel Colascione2014-04-03 02:50:58 -0700
commite3f04a4a8f439dee381d8e6d0c55c684107c1a55 (patch)
tree2b06876269dfbf41ba45efdd2fbcff663b7e5daa /src
parent1b85074c81b11066f60b6f4d8c827788429000a2 (diff)
downloademacs-e3f04a4a8f439dee381d8e6d0c55c684107c1a55.tar.gz
emacs-e3f04a4a8f439dee381d8e6d0c55c684107c1a55.zip
Assert that function cells contain valid lisp objects
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog6
-rw-r--r--src/alloc.c4
2 files changed, 10 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index b2a8f81f3a6..f3cc322636c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,11 @@
12014-04-03 Daniel Colascione <dancol@dancol.org> 12014-04-03 Daniel Colascione <dancol@dancol.org>
2 2
3 * alloc.c (sweep_symbols,mark_object): Assert that symbol function
4 cells contain valid lisp objects. (Modified version of patch from
5 Dmitry).
6
72014-04-03 Daniel Colascione <dancol@dancol.org>
8
3 * alloc.c (detect_suspicious_free): Split actual stack capturing 9 * alloc.c (detect_suspicious_free): Split actual stack capturing
4 out into new function for easier breakpoint setting. 10 out into new function for easier breakpoint setting.
5 (note_suspicious_free): New function. 11 (note_suspicious_free): New function.
diff --git a/src/alloc.c b/src/alloc.c
index 7c63fa05ac6..a007a43457d 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -6174,6 +6174,8 @@ mark_object (Lisp_Object arg)
6174 break; 6174 break;
6175 CHECK_ALLOCATED_AND_LIVE (live_symbol_p); 6175 CHECK_ALLOCATED_AND_LIVE (live_symbol_p);
6176 ptr->gcmarkbit = 1; 6176 ptr->gcmarkbit = 1;
6177 /* Attempt to catch bogus objects. */
6178 eassert (valid_lisp_object_p (ptr->function) >= 1);
6177 mark_object (ptr->function); 6179 mark_object (ptr->function);
6178 mark_object (ptr->plist); 6180 mark_object (ptr->plist);
6179 switch (ptr->redirect) 6181 switch (ptr->redirect)
@@ -6601,6 +6603,8 @@ sweep_symbols (void)
6601 if (!pure_p) 6603 if (!pure_p)
6602 eassert (!STRING_MARKED_P (XSTRING (sym->s.name))); 6604 eassert (!STRING_MARKED_P (XSTRING (sym->s.name)));
6603 sym->s.gcmarkbit = 0; 6605 sym->s.gcmarkbit = 0;
6606 /* Attempt to catch bogus objects. */
6607 eassert (valid_lisp_object_p (sym->s.function) >= 1);
6604 } 6608 }
6605 } 6609 }
6606 6610