diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-04-13 21:45:56 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-05-10 17:14:20 +0900 |
commit | 2d9bc3efe57fe0ec1a8171340c950fb98ca8c8f2 (patch) | |
tree | 497bb420e7e9ba043ffbab0c8348eb96d4af0d2a /ruby.c | |
parent | 0e5aecea11d6d214bf578edfbbdb126ceb4762cb (diff) | |
download | ruby-2d9bc3efe57fe0ec1a8171340c950fb98ca8c8f2.tar.gz |
[Bug #19597] Freeze script name
Diffstat (limited to 'ruby.c')
-rw-r--r-- | ruby.c | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -2616,12 +2616,18 @@ external_str_new_cstr(const char *p) #endif } +static void +set_progname(VALUE name) +{ + rb_orig_progname = rb_progname = name; + rb_vm_set_progname(rb_progname); +} + void ruby_script(const char *name) { if (name) { - rb_orig_progname = rb_progname = external_str_new_cstr(name); - rb_vm_set_progname(rb_progname); + set_progname(rb_str_freeze(external_str_new_cstr(name))); } } @@ -2632,8 +2638,7 @@ ruby_script(const char *name) void ruby_set_script_name(VALUE name) { - rb_orig_progname = rb_progname = rb_str_dup(name); - rb_vm_set_progname(rb_progname); + set_progname(rb_str_new_frozen(name)); } static void @@ -2757,7 +2762,7 @@ ruby_process_options(int argc, char **argv) origarg.argc = argc; origarg.argv = argv; } - ruby_script(script_name); /* for the time being */ + set_progname(external_str_new_cstr(script_name)); /* for the time being */ rb_argv0 = rb_str_new4(rb_progname); rb_gc_register_mark_object(rb_argv0); iseq = process_options(argc, argv, cmdline_options_init(&opt)); |