aboutsummaryrefslogtreecommitdiff
path: root/src/lj_gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_gc.c')
-rw-r--r--src/lj_gc.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/lj_gc.c b/src/lj_gc.c
index cfbce037..1f382ea0 100644
--- a/src/lj_gc.c
+++ b/src/lj_gc.c
@@ -65,6 +65,12 @@ static void gc_mark(global_State *g, GCobj *o)
65 gray2black(o); /* Userdata are never gray. */ 65 gray2black(o); /* Userdata are never gray. */
66 if (mt) gc_markobj(g, mt); 66 if (mt) gc_markobj(g, mt);
67 gc_markobj(g, tabref(gco2ud(o)->env)); 67 gc_markobj(g, tabref(gco2ud(o)->env));
68 if (LJ_HASBUFFER && gco2ud(o)->udtype == UDTYPE_BUFFER) {
69 SBufExt *sbx = (SBufExt *)uddata(gco2ud(o));
70 if (sbufiscow(sbx) && gcref(sbx->cowref) != NULL) {
71 gc_markobj(g, gcref(sbx->cowref));
72 }
73 }
68 } else if (LJ_UNLIKELY(gct == ~LJ_TUPVAL)) { 74 } else if (LJ_UNLIKELY(gct == ~LJ_TUPVAL)) {
69 GCupval *uv = gco2uv(o); 75 GCupval *uv = gco2uv(o);
70 gc_marktv(g, uvval(uv)); 76 gc_marktv(g, uvval(uv));