summaryrefslogtreecommitdiff
path: root/vm.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-10-13 13:00:57 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-10-13 13:00:57 +0900
commit1b35808a13cc69f2014ffa849de8be15139d8e4e (patch)
tree332524ae606b927ddae1bdbc7e94cda607eb81a7 /vm.c
parentbad61d34bed71ff3b68c6b1b29f038b305723cc0 (diff)
Moved the common code
Diffstat (limited to 'vm.c')
-rw-r--r--vm.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/vm.c b/vm.c
index 785bb0c5cb..03813db448 100644
--- a/vm.c
+++ b/vm.c
@@ -982,15 +982,16 @@ collect_outer_variable_names(ID id, VALUE val, void *ptr)
data->yield = true;
}
else {
+ VALUE *store;
if (data->isolate ||
val == Qtrue /* write */) {
- if (data->ary == Qfalse) data->ary = rb_ary_new();
- rb_ary_push(data->ary, ID2SYM(id));
+ store = &data->ary;
}
else {
- if (data->read_only == Qfalse) data->read_only = rb_ary_new();
- rb_ary_push(data->read_only, ID2SYM(id));
+ store = &data->read_only;
}
+ if (*store == Qfalse) *store = rb_ary_new();
+ rb_ary_push(*store, ID2SYM(id));
}
return ID_TABLE_CONTINUE;
}