aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2024-03-10 17:16:41 +0100
committerMike Pall <mike>2024-03-10 17:16:41 +0100
commitdda1ac273ad946387088d91039a8ae319359903d (patch)
tree6822b5d961acefe0466b883768cebd8dd4a078ee
parent88ed9fdbbba632d174a473a0a97c914089c2916d (diff)
downloadluajit-dda1ac273ad946387088d91039a8ae319359903d.tar.gz
luajit-dda1ac273ad946387088d91039a8ae319359903d.tar.bz2
luajit-dda1ac273ad946387088d91039a8ae319359903d.zip
FFI: Treat cdata finalizer table as a GC root.
Thanks to Sergey Bronnikov. #1168
-rw-r--r--src/lj_gc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/lj_gc.c b/src/lj_gc.c
index 06484f6f..9c0d6797 100644
--- a/src/lj_gc.c
+++ b/src/lj_gc.c
@@ -93,6 +93,9 @@ static void gc_mark_start(global_State *g)
93 gc_markobj(g, tabref(mainthread(g)->env)); 93 gc_markobj(g, tabref(mainthread(g)->env));
94 gc_marktv(g, &g->registrytv); 94 gc_marktv(g, &g->registrytv);
95 gc_mark_gcroot(g); 95 gc_mark_gcroot(g);
96#if LJ_HASFFI
97 if (ctype_ctsG(g)) gc_markobj(g, ctype_ctsG(g)->finalizer);
98#endif
96 g->gc.state = GCSpropagate; 99 g->gc.state = GCSpropagate;
97} 100}
98 101