summaryrefslogtreecommitdiffhomepage
path: root/src/gc.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2016-03-06 12:15:55 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2016-03-06 12:15:55 +0900
commitb4d946f6bccffa4cd6b1a89b13cf0a6f76d8f3ff (patch)
tree18da5408ccc2a372b859162a386caf754ac36795 /src/gc.c
parent1a4540fb4aa53ee438b5fa65e28f3ad39537c39e (diff)
parentf1eb3aea114cbd1e2622cbe9618571f3e1eec115 (diff)
downloadmruby-b4d946f6bccffa4cd6b1a89b13cf0a6f76d8f3ff.tar.gz
mruby-b4d946f6bccffa4cd6b1a89b13cf0a6f76d8f3ff.zip
Merge pull request #3129 from kou/fix-segv-by-backtrace-and-gc
Fix SEGV by backtrace and GC
Diffstat (limited to 'src/gc.c')
-rw-r--r--src/gc.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gc.c b/src/gc.c
index b23e4869e..e7948e4f5 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -695,8 +695,13 @@ obj_free(mrb_state *mrb, struct RBasic *obj)
#endif
case MRB_TT_OBJECT:
+ mrb_gc_free_iv(mrb, (struct RObject*)obj);
+ break;
+
case MRB_TT_EXCEPTION:
mrb_gc_free_iv(mrb, (struct RObject*)obj);
+ if ((struct RObject*)obj == mrb->backtrace.exc)
+ mrb->backtrace.exc = 0;
break;
case MRB_TT_CLASS: