diff options
| author | dearblue <[email protected]> | 2021-07-17 20:43:19 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2021-07-17 20:43:19 +0900 |
| commit | de4523f793bb81bb52a80f55222b28e00c86b96c (patch) | |
| tree | 4a43d796941eb9c0b220f4f2e0d8416bd1a24403 /mrbgems/mruby-binding-core | |
| parent | d4e22c2cec78945fa192917bfe44c6a0f979d7ee (diff) | |
| download | mruby-de4523f793bb81bb52a80f55222b28e00c86b96c.tar.gz mruby-de4523f793bb81bb52a80f55222b28e00c86b96c.zip | |
Explicit write barrier for binding
Diffstat (limited to 'mrbgems/mruby-binding-core')
| -rw-r--r-- | mrbgems/mruby-binding-core/src/binding-core.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/mrbgems/mruby-binding-core/src/binding-core.c b/mrbgems/mruby-binding-core/src/binding-core.c index 7b70cfb78..5e104e720 100644 --- a/mrbgems/mruby-binding-core/src/binding-core.c +++ b/mrbgems/mruby-binding-core/src/binding-core.c @@ -151,6 +151,9 @@ binding_local_variable_set(mrb_state *mrb, mrb_value self) mrb_value *e = binding_local_variable_search(mrb, proc, env, varname); if (e) { *e = obj; + if (!mrb_immediate_p(obj)) { + mrb_field_write_barrier(mrb, (struct RBasic*)env, (struct RBasic*)mrb_obj_ptr(obj)); + } } else { mrb_proc_merge_lvar(mrb, (mrb_irep*)proc->body.irep, env, 1, &varname, &obj); |
