summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorTomoyuki Sahara <[email protected]>2015-11-24 09:54:03 +0900
committerTomoyuki Sahara <[email protected]>2015-11-24 09:54:03 +0900
commitc9a4091b83b06b20d8e9178ce748d5b101925a2e (patch)
treeca2c2673f4c7ed47d0cbacc81f61c855b212a360 /src
parent1f4bd9fd9f0cfc9a67c5fd92f4e5fdde5facf7a1 (diff)
downloadmruby-c9a4091b83b06b20d8e9178ce748d5b101925a2e.tar.gz
mruby-c9a4091b83b06b20d8e9178ce748d5b101925a2e.zip
arguments can be shared strings.
Diffstat (limited to 'src')
-rw-r--r--src/file.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/file.c b/src/file.c
index 9054b67aa..7e2b64c3e 100644
--- a/src/file.c
+++ b/src/file.c
@@ -298,14 +298,16 @@ mrb_file_s_symlink(mrb_state *mrb, mrb_value klass)
#else
mrb_value from, to;
const char *src, *dst;
+ int ai = mrb_gc_arena_save(mrb);
mrb_get_args(mrb, "SS", &from, &to);
- src = mrb_string_value_cstr(mrb, &from);
- dst = mrb_string_value_cstr(mrb, &to);
+ src = mrb_str_to_cstr(mrb, from);
+ dst = mrb_str_to_cstr(mrb, to);
if (symlink(src, dst) < 0) {
mrb_sys_fail(mrb, mrb_str_to_cstr(mrb, mrb_format(mrb, "(%S, %S)", from, to)));
}
+ mrb_gc_arena_restore(mrb, ai);
#endif
return mrb_fixnum_value(0);
}