summaryrefslogtreecommitdiffhomepage
path: root/src/gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gc.c')
-rw-r--r--src/gc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/gc.c b/src/gc.c
index 995678b0c..687e601a9 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -351,8 +351,9 @@ gc_mark_children(mrb_state *mrb, struct RBasic *obj)
{
struct RString *s = (struct RString*)obj;
- if (s->flags & MRB_STR_SHARED) {
- mrb_gc_mark_value(mrb, s->aux.shared)
+ while (s->flags & MRB_STR_SHARED) {
+ s = s->aux.shared;
+ if (!s) break;
}
}
break;