Skip to content

Commit

Permalink
Do not modify shared array
Browse files Browse the repository at this point in the history
[Bug #15821]
  • Loading branch information
nobu committed May 21, 2019
1 parent f9696ca commit ac00bdc
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
13 changes: 12 additions & 1 deletion ruby.c
Expand Up @@ -1713,8 +1713,12 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
rb_obj_freeze(opt->script_name);
if (IF_UTF8_PATH(uenc != lenc, 1)) {
long i;
VALUE load_path = GET_VM()->load_path;
rb_vm_t *vm = GET_VM();
VALUE load_path = vm->load_path;
const ID id_initial_load_path_mark = INITIAL_LOAD_PATH_MARK;
int modifiable = FALSE;

rb_get_expanded_load_path();
for (i = 0; i < RARRAY_LEN(load_path); ++i) {
VALUE path = RARRAY_AREF(load_path, i);
int mark = rb_attr_get(path, id_initial_load_path_mark) == path;
Expand All @@ -1726,8 +1730,15 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
path = rb_enc_associate(rb_str_dup(path), lenc);
#endif
if (mark) rb_ivar_set(path, id_initial_load_path_mark, path);
if (!modifiable) {
rb_ary_modify(load_path);
modifiable = TRUE;
}
RARRAY_ASET(load_path, i, path);
}
if (modifiable) {
rb_ary_replace(vm->load_path_snapshot, load_path);
}
}
Init_ext(); /* load statically linked extensions before rubygems */
if (opt->features.set & FEATURE_BIT(gems)) {
Expand Down
1 change: 0 additions & 1 deletion test/ruby/test_gc.rb
Expand Up @@ -385,7 +385,6 @@ def initialize
end

def test_gc_stress_at_startup
skip
assert_in_out_err([{"RUBY_DEBUG"=>"gc_stress"}], '', [], [], '[Bug #15784]', success: true)
end

Expand Down

0 comments on commit ac00bdc

Please sign in to comment.