Commit 5fcc777f authored by Eli Zaretskii's avatar Eli Zaretskii

Fix last change with thread marking under GC_CHECK_MARKED_OBJECTS

* src/thread.c (primary_thread_p): New function.
* src/alloc.c (mark_object): Use 'primary_thread_p' to bypass tests
meant for thread objects allocated dynamically.
* src/thread.h (primary_thread_p): Add prototype.
parent 3ec15033
......@@ -6406,7 +6406,7 @@ mark_object (Lisp_Object arg)
#ifdef GC_CHECK_MARKED_OBJECTS
m = mem_find (po);
if (m == MEM_NIL && !SUBRP (obj) && !THREADP (obj))
if (m == MEM_NIL && !SUBRP (obj) && !primary_thread_p (po))
emacs_abort ();
#endif /* GC_CHECK_MARKED_OBJECTS */
......@@ -6418,7 +6418,7 @@ mark_object (Lisp_Object arg)
if (pvectype != PVEC_SUBR
&& pvectype != PVEC_BUFFER
&& pvectype != PVEC_THREAD)
&& !primary_thread_p (po))
CHECK_LIVE (live_vector_p);
switch (pvectype)
......
......@@ -950,6 +950,12 @@ init_primary_thread (void)
primary_thread.event_object = Qnil;
}
bool
primary_thread_p (void *ptr)
{
return (ptr == &primary_thread) ? true : false;
}
void
init_threads_once (void)
{
......
......@@ -236,6 +236,7 @@ extern void maybe_reacquire_global_lock (void);
extern void init_threads_once (void);
extern void init_threads (void);
extern void syms_of_threads (void);
extern bool primary_thread_p (void *);
typedef int select_func (int, fd_set *, fd_set *, fd_set *,
const struct timespec *, const sigset_t *);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment