summaryrefslogtreecommitdiff
path: root/io.c
diff options
context:
space:
mode:
Diffstat (limited to 'io.c')
-rw-r--r--io.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/io.c b/io.c
index 1377595050..3aceb78cbb 100644
--- a/io.c
+++ b/io.c
@@ -3446,16 +3446,16 @@ rb_f_syscall(argc, argv)
rb_raise(rb_eArgError, "too few arguments for syscall");
arg[0] = NUM2LONG(argv[0]); argv++;
while (items--) {
- if (FIXNUM_P(*argv)) {
- arg[i] = (unsigned long)NUM2LONG(*argv);
- }
- else {
- VALUE v = *argv;
+ VALUE v = rb_check_string_type(*argv);
+ if (!NIL_P(v)) {
StringValue(v);
rb_str_modify(v);
arg[i] = (unsigned long)RSTRING(v)->ptr;
}
+ else {
+ arg[i] = (unsigned long)NUM2LONG(*argv);
+ }
argv++;
i++;
}