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 6aeac140ca0..1a72941cc92 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -6003,6 +6003,8 @@ garbage_collect_1 (void *end) | |||
| 6003 | VECTOR_UNMARK (&buffer_defaults); | 6003 | VECTOR_UNMARK (&buffer_defaults); |
| 6004 | VECTOR_UNMARK (&buffer_local_symbols); | 6004 | VECTOR_UNMARK (&buffer_local_symbols); |
| 6005 | 6005 | ||
| 6006 | unmark_main_thread (); | ||
| 6007 | |||
| 6006 | check_cons_list (); | 6008 | check_cons_list (); |
| 6007 | 6009 | ||
| 6008 | gc_in_progress = 0; | 6010 | gc_in_progress = 0; |
diff --git a/src/lisp.h b/src/lisp.h index 782c396dbb4..24551699328 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -3975,6 +3975,7 @@ extern void syms_of_module (void); | |||
| 3975 | 3975 | ||
| 3976 | /* Defined in thread.c. */ | 3976 | /* Defined in thread.c. */ |
| 3977 | extern void mark_threads (void); | 3977 | extern void mark_threads (void); |
| 3978 | extern void unmark_main_thread (void); | ||
| 3978 | 3979 | ||
| 3979 | /* Defined in editfns.c. */ | 3980 | /* Defined in editfns.c. */ |
| 3980 | extern void insert1 (Lisp_Object); | 3981 | extern void insert1 (Lisp_Object); |
diff --git a/src/thread.c b/src/thread.c index 0cd1ae33dc2..47f55e7f67c 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 |