summaryrefslogtreecommitdiff
path: root/ruby.c
diff options
context:
space:
mode:
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/ruby.c b/ruby.c
index be83c954aa..c1f8aceb09 100644
--- a/ruby.c
+++ b/ruby.c
@@ -1693,6 +1693,8 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
char fbuf[MAXPATHLEN];
int i = (int)proc_options(argc, argv, opt, 0);
unsigned int dump = opt->dump & dump_exit_bits;
+ rb_vm_t *vm = GET_VM();
+ const long loaded_before_enc = RARRAY_LEN(vm->loaded_features);
if (opt->dump & (DUMP_BIT(usage)|DUMP_BIT(help))) {
int tty = isatty(1);
@@ -1894,7 +1896,6 @@ 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;
- 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;
@@ -1921,6 +1922,15 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
rb_ary_replace(vm->load_path_snapshot, load_path);
}
}
+ {
+ VALUE loaded_features = vm->loaded_features;
+ for (long i = loaded_before_enc; i < RARRAY_LEN(loaded_features); ++i) {
+ VALUE path = RARRAY_AREF(loaded_features, i);
+ path = rb_enc_associate(rb_str_dup(path), IF_UTF8_PATH(uenc, lenc));
+ RARRAY_ASET(loaded_features, i, path);
+ }
+ rb_get_expanded_load_path();
+ }
if (opt->features.mask & COMPILATION_FEATURES) {
VALUE option = rb_hash_new();