summaryrefslogtreecommitdiff
path: root/io.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-21 17:44:38 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-21 17:44:38 +0000
commit9910ee4f5c9c97b5908ab4bba64189a9c9a39b8b (patch)
tree2ea8bd0b812885ec88a46fc3ee5a352b3452e6ff /io.c
parent32c7a56555b7099431cc98ff2bed3ca8330d5f82 (diff)
* io.c (rb_io_extract_modeenc): use rb_check_to_integer to test
integer. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18759 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r--io.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/io.c b/io.c
index 3139369d5e..d22dc3800f 100644
--- a/io.c
+++ b/io.c
@@ -3813,6 +3813,7 @@ rb_io_extract_modeenc(VALUE mode, VALUE opthash,
int modenum, flags;
rb_encoding *enc, *enc2;
int has_enc = 0;
+ VALUE intmode;
enc = NULL;
enc2 = NULL;
@@ -3821,11 +3822,11 @@ rb_io_extract_modeenc(VALUE mode, VALUE opthash,
flags = FMODE_READABLE;
modenum = O_RDONLY;
}
- else if (FIXNUM_P(mode)) {
- modenum = FIX2INT(mode);
+ else if (!NIL_P(intmode = rb_check_to_integer(mode, "to_int"))) {
+ modenum = NUM2INT(intmode);
flags = rb_io_modenum_flags(modenum);
}
- else { /* xxx: Bignum, to_int */
+ else {
const char *p;
SafeStringValue(mode);
p = StringValueCStr(mode);