diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-01-11 09:18:54 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-01-11 09:18:54 +0000 |
commit | 85e32dd2212bc6e5bb2b48c5b6c94e048e84afeb (patch) | |
tree | 09c1328183e4ac51711b93522b53b7f0c62d5b4d /string.c | |
parent | 5915dc245e5efac34d676ad29ebd38d6b46f16cf (diff) | |
download | ruby-85e32dd2212bc6e5bb2b48c5b6c94e048e84afeb.tar.gz |
* re.c (match_select): should propagate taintness.
* hash.c (rb_hash_set_default): Hash#default= should return the
new value.
* string.c (rb_str_to_i): accepts optional base argument. [new]
* numeric.c (rb_fix2str): should not handle negative fixnum values
int32 via calling sprintf() directly.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 23 |
1 files changed, 19 insertions, 4 deletions
@@ -6,7 +6,7 @@ $Date$ created at: Mon Aug 9 17:12:58 JST 1993 - Copyright (C) 1993-2001 Yukihiro Matsumoto + Copyright (C) 1993-2002 Yukihiro Matsumoto Copyright (C) 2000 Network Applied Communication Laboratory, Inc. Copyright (C) 2000 Information-technology Promotion Agency, Japan @@ -1748,10 +1748,25 @@ rb_str_include(str, arg) } static VALUE -rb_str_to_i(str) +rb_str_to_i(argc, argv, str) + int argc; + VALUE *argv; VALUE str; { - return rb_str2inum(str, 10); + VALUE b; + int base; + + rb_scan_args(argc, argv, "01", &b); + if (argc == 0) base = 10; + else base = NUM2INT(b); + + switch (base) { + case 2: case 8: case 10: case 16: + break; + default: + rb_raise(rb_eArgError, "illegal radix %d", base); + } + return rb_str2inum(str, base); } static VALUE @@ -3158,7 +3173,7 @@ Init_String() rb_define_method(rb_cString, "rindex", rb_str_rindex, -1); rb_define_method(rb_cString, "replace", rb_str_replace, 1); - rb_define_method(rb_cString, "to_i", rb_str_to_i, 0); + rb_define_method(rb_cString, "to_i", rb_str_to_i, -1); rb_define_method(rb_cString, "to_f", rb_str_to_f, 0); rb_define_method(rb_cString, "to_s", rb_str_to_s, 0); rb_define_method(rb_cString, "to_str", rb_str_to_s, 0); |