diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-06-14 08:08:50 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-06-14 08:08:50 +0000 |
commit | 1199a7d3d6399d44662b9a8bea5f359d1fdd40c2 (patch) | |
tree | 41f75742290a2ab9c156eccf4293949fb4c7e0a4 /string.c | |
parent | 8c4f656b6cbc088d215b0fd083611e7e6b6040a5 (diff) | |
download | ruby-1199a7d3d6399d44662b9a8bea5f359d1fdd40c2.tar.gz |
2000-06-14-2
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@759 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 39 |
1 files changed, 24 insertions, 15 deletions
@@ -1313,11 +1313,13 @@ rb_f_sub(argc, argv) int argc; VALUE *argv; { - VALUE str = rb_str_dup(uscore_get()); + VALUE str = uscore_get(); + VALUE dup = rb_str_dup(str); - rb_str_sub_bang(argc, argv, str); - rb_lastline_set(str); - return str; + if (NIL_P(rb_str_sub_bang(argc, argv, dup))) + return str; + rb_lastline_set(dup); + return dup; } static VALUE @@ -1333,11 +1335,13 @@ rb_f_gsub(argc, argv) int argc; VALUE *argv; { - VALUE str = rb_str_dup(uscore_get()); + VALUE str = uscore_get(); + VALUE dup = rb_str_dup(str); - rb_str_gsub_bang(argc, argv, str); - rb_lastline_set(str); - return str; + if (NIL_P(rb_str_gsub_bang(argc, argv, dup))) + return str; + rb_lastline_set(dup); + return dup; } static VALUE @@ -2356,10 +2360,13 @@ rb_f_chop_bang(str) static VALUE rb_f_chop() { - VALUE str = rb_str_dup(uscore_get()); + VALUE str = uscore_get(); - rb_str_chop_bang(str); - rb_lastline_set(str); + if (RSTRING(str)->len > 0) { + str = rb_str_dup(str); + rb_str_chop_bang(str); + rb_lastline_set(str); + } return str; } @@ -2432,11 +2439,13 @@ rb_f_chomp(argc, argv) int argc; VALUE *argv; { - VALUE str = rb_str_dup(uscore_get()); + VALUE str = uscore_get(); + VALUE dup = rb_str_dup(str); - rb_str_chomp_bang(argc, argv, str); - rb_lastline_set(str); - return str; + if (NIL_P(rb_str_chomp_bang(argc, argv, dup))) + return str; + rb_lastline_set(dup); + return dup; } static VALUE |