diff options
author | Mike Pall <mike> | 2024-03-10 17:16:41 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2024-03-10 17:16:41 +0100 |
commit | dda1ac273ad946387088d91039a8ae319359903d (patch) | |
tree | 6822b5d961acefe0466b883768cebd8dd4a078ee | |
parent | 88ed9fdbbba632d174a473a0a97c914089c2916d (diff) | |
download | luajit-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.c | 3 |
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 | ||