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.2.1 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/alloc.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/alloc.c') 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.2.1 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/alloc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/alloc.c') 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.2.1