From 84dfc8a7faccf53d54231ab47a2dc237c80251fb Mon Sep 17 00:00:00 2001 From: Dan Nicolaescu Date: Thu, 18 Nov 2010 13:45:03 -0800 Subject: * src/alloc.c (refill_memory_reserve): Move declaration ... * src/lisp.h (refill_memory_reserve): ... here. --- src/alloc.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/alloc.c') diff --git a/src/alloc.c b/src/alloc.c index fa39c1ee5dc..6e121212b14 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -351,7 +351,6 @@ enum mem_type static POINTER_TYPE *lisp_align_malloc (size_t, enum mem_type); static POINTER_TYPE *lisp_malloc (size_t, enum mem_type); -void refill_memory_reserve (void); #if GC_MARK_STACK || defined GC_MALLOC_CHECK -- cgit v1.3 From 96ad0af7411d61d6ae3e7afcab1b3996dd0ef1d4 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sun, 21 Nov 2010 19:39:42 -0500 Subject: Fix image cache marking bug (Bug#6301). * src/alloc.c (mark_terminals): Ensure that the image cache is marked even if the terminal object was marked earlier (Bug#6301). --- src/ChangeLog | 5 +++++ src/alloc.c | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'src/alloc.c') diff --git a/src/ChangeLog b/src/ChangeLog index f986c03cc14..0aa7e869c39 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2010-11-22 YAMAMOTO Mitsuharu + + * alloc.c (mark_terminals): Ensure that the image cache is marked + even if the terminal object was marked earlier (Bug#6301). + 2010-11-21 Chong Yidong * editfns.c (Fbyte_to_string): Signal an error arg is not a byte. diff --git a/src/alloc.c b/src/alloc.c index da63fe0f82b..4d19d3ac479 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -5771,13 +5771,14 @@ mark_terminals (void) for (t = terminal_list; t; t = t->next_terminal) { eassert (t->name != NULL); - if (!VECTOR_MARKED_P (t)) - { #ifdef HAVE_WINDOW_SYSTEM - mark_image_cache (t->image_cache); + /* If a terminal object is reachable from a stacpro'ed object, + it might have been marked already. Make sure the image cache + gets marked. */ + mark_image_cache (t->image_cache); #endif /* HAVE_WINDOW_SYSTEM */ - mark_vectorlike ((struct Lisp_Vector *)t); - } + if (!VECTOR_MARKED_P (t)) + mark_vectorlike ((struct Lisp_Vector *)t); } } -- cgit v1.3 From b609f5916da6c2fc66864b390e05e807d85ea88f Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sun, 21 Nov 2010 19:43:53 -0500 Subject: * alloc.c (mark_maybe_object): Return early if given a Lisp integer (Bug#6301). --- src/ChangeLog | 5 +++++ src/alloc.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'src/alloc.c') diff --git a/src/ChangeLog b/src/ChangeLog index 44dc63fd424..d9aad77fc7c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2010-11-22 YAMAMOTO Mitsuharu + + * alloc.c (mark_maybe_object): Return early if given a Lisp + integer (Bug#6301). + 2010-11-21 Ken Brown * sheap.c (STATIC_HEAP_SIZE): Revert previous change. diff --git a/src/alloc.c b/src/alloc.c index 6e121212b14..28636ec776c 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -3986,8 +3986,14 @@ DEFUN ("gc-status", Fgc_status, Sgc_status, 0, 0, "", static INLINE void mark_maybe_object (Lisp_Object obj) { - void *po = (void *) XPNTR (obj); - struct mem_node *m = mem_find (po); + void *po; + struct mem_node *m; + + if (INTEGERP (obj)) + return; + + po = (void *) XPNTR (obj); + m = mem_find (po); if (m != MEM_NIL) { -- cgit v1.3