diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/alloc.c | 2 | ||||
| -rw-r--r-- | src/lisp.h | 1 | ||||
| -rw-r--r-- | src/thread.c | 6 |
3 files changed, 9 insertions, 0 deletions
diff --git a/src/alloc.c b/src/alloc.c index 3b150797c36..0e48b33882c 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -5863,6 +5863,8 @@ garbage_collect_1 (void *end) | |||
| 5863 | VECTOR_UNMARK (&buffer_defaults); | 5863 | VECTOR_UNMARK (&buffer_defaults); |
| 5864 | VECTOR_UNMARK (&buffer_local_symbols); | 5864 | VECTOR_UNMARK (&buffer_local_symbols); |
| 5865 | 5865 | ||
| 5866 | unmark_main_thread (); | ||
| 5867 | |||
| 5866 | check_cons_list (); | 5868 | check_cons_list (); |
| 5867 | 5869 | ||
| 5868 | gc_in_progress = 0; | 5870 | gc_in_progress = 0; |
diff --git a/src/lisp.h b/src/lisp.h index a7a26ef350e..145901dff5e 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -4011,6 +4011,7 @@ extern void syms_of_module (void); | |||
| 4011 | 4011 | ||
| 4012 | /* Defined in thread.c. */ | 4012 | /* Defined in thread.c. */ |
| 4013 | extern void mark_threads (void); | 4013 | extern void mark_threads (void); |
| 4014 | extern void unmark_main_thread (void); | ||
| 4014 | 4015 | ||
| 4015 | /* Defined in editfns.c. */ | 4016 | /* Defined in editfns.c. */ |
| 4016 | extern void insert1 (Lisp_Object); | 4017 | extern void insert1 (Lisp_Object); |
diff --git a/src/thread.c b/src/thread.c index fc933440fcc..3674af0e47b 100644 --- a/src/thread.c +++ b/src/thread.c | |||
| @@ -656,6 +656,12 @@ mark_threads (void) | |||
| 656 | flush_stack_call_func (mark_threads_callback, NULL); | 656 | flush_stack_call_func (mark_threads_callback, NULL); |
| 657 | } | 657 | } |
| 658 | 658 | ||
| 659 | void | ||
| 660 | unmark_main_thread (void) | ||
| 661 | { | ||
| 662 | main_thread.header.size &= ~ARRAY_MARK_FLAG; | ||
| 663 | } | ||
| 664 | |||
| 659 | 665 | ||
| 660 | 666 | ||
| 661 | static void | 667 | static void |