diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-03-05 05:22:17 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-03-05 05:22:17 +0000 |
commit | 39787ea14db33dd4265d7f6271cd2d59ccaeff37 (patch) | |
tree | 49743edd8a3dbb4fa4cfea6c472f3398edfe0639 /string.c | |
parent | 413db1b036083f76a2b34895af3c8a3204e174f2 (diff) | |
download | ruby-39787ea14db33dd4265d7f6271cd2d59ccaeff37.tar.gz |
* numeric.c (fix_to_s): avoid rb_scan_args() when no argument
given.
* bignum.c (rb_big_to_s): ditto.
* enum.c (enum_first): ditto.
* eval_jump.c (rb_f_catch): ditto.
* io.c (rb_obj_display): ditto.
* class.c (rb_obj_singleton_methods): ditto.
* object.c (rb_class_initialize): ditto.
* random.c (rb_f_srand): ditto.
* range.c (range_step): ditto.
* re.c (rb_reg_s_last_match): ditto.
* string.c (rb_str_to_i): ditto.
* string.c (rb_str_each_line): ditto.
* string.c (rb_str_chomp_bang): ditto.
* string.c (rb_str_sum): ditto.
* string.c (str_modifiable): declare inline.
* string.c (str_independent): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 32 |
1 files changed, 21 insertions, 11 deletions
@@ -667,7 +667,7 @@ rb_str_init(int argc, VALUE *argv, VALUE str) { VALUE orig; - if (rb_scan_args(argc, argv, "01", &orig) == 1) + if (argc > 0 && rb_scan_args(argc, argv, "01", &orig) == 1) rb_str_replace(str, orig); return str; } @@ -950,7 +950,7 @@ rb_str_format_m(VALUE str, VALUE arg) return rb_str_format(1, &arg, str); } -static void +static inline void str_modifiable(VALUE str) { if (FL_TEST(str, STR_TMPLOCK)) { @@ -961,7 +961,7 @@ str_modifiable(VALUE str) rb_raise(rb_eSecurityError, "Insecure: can't modify string"); } -static int +static inline int str_independent(VALUE str) { str_modifiable(str); @@ -3620,13 +3620,15 @@ rb_str_include(VALUE str, VALUE arg) static VALUE rb_str_to_i(int argc, VALUE *argv, VALUE str) { - VALUE b; int base; - rb_scan_args(argc, argv, "01", &b); if (argc == 0) base = 10; - else base = NUM2INT(b); + else { + VALUE b; + rb_scan_args(argc, argv, "01", &b); + base = NUM2INT(b); + } if (base < 0) { rb_raise(rb_eArgError, "invalid radix %d", base); } @@ -5028,9 +5030,12 @@ rb_str_each_line(int argc, VALUE *argv, VALUE str) VALUE line; int n; - if (rb_scan_args(argc, argv, "01", &rs) == 0) { + if (argc == 0) { rs = rb_rs; } + else { + rb_scan_args(argc, argv, "01", &rs); + } RETURN_ENUMERATOR(str, argc, argv); if (NIL_P(rs)) { rb_yield(str); @@ -5281,7 +5286,7 @@ rb_str_chomp_bang(int argc, VALUE *argv, VALUE str) if (len == 0) return Qnil; p = RSTRING_PTR(str); e = p + len; - if (rb_scan_args(argc, argv, "01", &rs) == 0) { + if (argc == 0) { rs = rb_rs; if (rs == rb_default_rs) { smart_chomp: @@ -5324,6 +5329,9 @@ rb_str_chomp_bang(int argc, VALUE *argv, VALUE str) return str; } } + else { + rb_scan_args(argc, argv, "01", &rs); + } if (NIL_P(rs)) return Qnil; StringValue(rs); rslen = RSTRING_LEN(rs); @@ -5812,11 +5820,13 @@ rb_str_sum(int argc, VALUE *argv, VALUE str) char *ptr, *p, *pend; long len; - if (rb_scan_args(argc, argv, "01", &vbits) == 0) { + if (argc == 0) { bits = 16; } - else bits = NUM2INT(vbits); - + else { + rb_scan_args(argc, argv, "01", &vbits); + bits = NUM2INT(vbits); + } ptr = p = RSTRING_PTR(str); len = RSTRING_LEN(str); pend = p + len; |