Need to mark shared env objects as MRB_TT_FREE; fix #4143

The following code mistakenly exits from the function without marking
the env object as `MRB_TT_FREE`.

``` ruby
      if (MRB_ENV_STACK_SHARED_P(e)) {
        /* cannot be freed */
        return; // <- should be `break`
      }
```
This commit is contained in:
Yukihiro "Matz" Matsumoto
2018-10-29 11:51:04 +09:00
parent 7ff84789c3
commit dffa203d07
+2 -1
View File
@@ -788,7 +788,8 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
if (MRB_ENV_STACK_SHARED_P(e)) {
/* cannot be freed */
return;
e->stack = NULL;
break;
}
mrb_free(mrb, e->stack);
e->stack = NULL;