From 8457b79f749c86c9ccd04443b204edc1891cfe60 Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Wed, 27 Oct 2021 15:24:17 -0400 Subject: [PATCH] only visit nonfunction_mt once when traversing method tables (#42821) --- src/gf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gf.c b/src/gf.c index bd2dc7b5469848..07594a217364f1 100644 --- a/src/gf.c +++ b/src/gf.c @@ -442,7 +442,7 @@ static void foreach_mtable_in_module( jl_typename_t *tn = ((jl_datatype_t*)v)->name; if (tn->module == m && tn->name == b->name) { jl_methtable_t *mt = tn->mt; - if (mt != NULL && (jl_value_t*)mt != jl_nothing && mt != jl_type_type_mt) { + if (mt != NULL && (jl_value_t*)mt != jl_nothing && mt != jl_type_type_mt && mt != jl_nonfunction_mt) { visit(mt, env); } } @@ -467,6 +467,7 @@ void jl_foreach_reachable_mtable(void (*visit)(jl_methtable_t *mt, void *env), v JL_GC_PUSH2(&visited, &mod_array); mod_array = jl_get_loaded_modules(); visit(jl_type_type_mt, env); + visit(jl_nonfunction_mt, env); if (mod_array) { int i; for (i = 0; i < jl_array_len(mod_array); i++) {