summaryrefslogtreecommitdiffhomepage
path: root/src/gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gc.c')
-rw-r--r--src/gc.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/gc.c b/src/gc.c
index 9ea3c1712..0a38139eb 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -903,15 +903,22 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
}
break;
-#if defined(MRB_INT64) && defined(MRB_32BIT)
-#ifdef MRB_USE_RATIONAL
+#if defined(MRB_USE_RATIONAL) && defined(MRB_INT64) && defined(MRB_32BIT)
case MRB_TT_RATIONAL:
{
struct RData *o = (struct RData*)obj;
- mrb_free(mrb, obj->iv_tbl);
+ mrb_free(mrb, o->iv);
}
break;
#endif
+
+#if defined(MRB_USE_COMPLEX) && defined(MRB_32BIT) && !defined(MRB_USE_FLOAT32)
+ case MRB_TT_COMPLEX:
+ {
+ struct RData *o = (struct RData*)obj;
+ mrb_free(mrb, o->iv);
+ }
+ break;
#endif
default: