summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-09-08 09:17:55 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-09-08 09:17:55 +0000
commitb0e1436164e4004f048bac4babc220e0deccb4f9 (patch)
tree1e46ec5aa4b12c076ba9c535ff889a49b9a7b3c1 /string.c
parent48acbc5e03622f1eb0423a6c2a3a603f61acfac6 (diff)
1.1c5
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@300 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c47
1 files changed, 24 insertions, 23 deletions
diff --git a/string.c b/string.c
index f379f0291a..b5a387e88b 100644
--- a/string.c
+++ b/string.c
@@ -1588,7 +1588,7 @@ static VALUE
str_upcase(str)
VALUE str;
{
- VALUE val = str_upcase_bang(str_dup(str));
+ VALUE val = str_upcase_bang(str = str_dup(str));
if (NIL_P(val)) return str;
return val;
@@ -1622,7 +1622,7 @@ static VALUE
str_downcase(str)
VALUE str;
{
- VALUE val = str_downcase_bang(str_dup(str));
+ VALUE val = str_downcase_bang(str = str_dup(str));
if (NIL_P(val)) return str;
return val;
@@ -1658,7 +1658,7 @@ static VALUE
str_capitalize(str)
VALUE str;
{
- VALUE val = str_capitalize_bang(str_dup(str));
+ VALUE val = str_capitalize_bang(str = str_dup(str));
if (NIL_P(val)) return str;
return val;
@@ -1696,7 +1696,7 @@ static VALUE
str_swapcase(str)
VALUE str;
{
- VALUE val = str_swapcase_bang(str_dup(str));
+ VALUE val = str_swapcase_bang(str = str_dup(str));
if (NIL_P(val)) return str;
return val;
@@ -1851,7 +1851,7 @@ static VALUE
str_tr(str, src, repl)
VALUE str, src, repl;
{
- VALUE val = tr_trans(str_dup(str), src, repl, 0);
+ VALUE val = tr_trans(str = str_dup(str), src, repl, 0);
if (NIL_P(val)) return str;
return val;
@@ -1914,7 +1914,7 @@ static VALUE
str_delete(str1, str2)
VALUE str1, str2;
{
- VALUE val = str_delete_bang(str_dup(str1), str2);
+ VALUE val = str_delete_bang(str1 = str_dup(str1), str2);
if (NIL_P(val)) return str1;
return val;
@@ -1978,7 +1978,7 @@ str_squeeze(argc, argv, str)
VALUE *argv;
VALUE str;
{
- VALUE val = str_squeeze_bang(argc, argv, str_dup(str));
+ VALUE val = str_squeeze_bang(argc, argv, str = str_dup(str));
if (NIL_P(val)) return str;
return val;
@@ -1995,7 +1995,7 @@ static VALUE
str_tr_s(str, src, repl)
VALUE str, src, repl;
{
- VALUE val = tr_trans(str_dup(str), src, repl, 1);
+ VALUE val = tr_trans(str = str_dup(str), src, repl, 1);
if (NIL_P(val)) return str;
return val;
@@ -2192,17 +2192,16 @@ str_each_line(argc, argv, str)
if (rslen == 0 && *p == '\n') {
if (*(p+1) != '\n') continue;
while (*p == '\n') p++;
- p--;
}
- if (*p == newline &&
+ if (p[-1] == newline &&
(rslen <= 1 ||
- memcmp(RSTRING(rs)->ptr, p-rslen+1, rslen) == 0)) {
- line = str_new(s, p - s + 1);
+ memcmp(RSTRING(rs)->ptr, p-rslen, rslen) == 0)) {
+ line = str_new(s, p - s);
lastline_set(line);
rb_yield(line);
if (RSTRING(str)->ptr != ptr || RSTRING(str)->len != len)
Fail("string modified");
- s = p + 1;
+ s = p;
}
}
@@ -2250,7 +2249,7 @@ static VALUE
str_chop(str)
VALUE str;
{
- VALUE val = str_chop_bang(str_dup(str));
+ VALUE val = str_chop_bang(str = str_dup(str));
if (NIL_P(val)) return str;
return val;
@@ -2266,12 +2265,13 @@ f_chop_bang(str)
static VALUE
f_chop()
{
- VALUE str = uscore_get();
+ VALUE str = str_dup(uscore_get());
+ VALUE val;
- str = str_chop_bang(str_dup(str));
- if (NIL_P(str)) return uscore_get();
- lastline_set(str);
- return str;
+ val = str_chop_bang(str);
+ if (NIL_P(val)) return str;
+ lastline_set(val);
+ return val;
}
static VALUE
@@ -2323,7 +2323,7 @@ str_chomp(argc, argv, str)
VALUE *argv;
VALUE str;
{
- VALUE val = str_chomp_bang(argc, argv, str_dup(str));
+ VALUE val = str_chomp_bang(argc, argv, str = str_dup(str));
if (NIL_P(val)) return str;
return val;
@@ -2342,9 +2342,10 @@ f_chomp(argc, argv)
int argc;
VALUE *argv;
{
- VALUE val = str_chomp_bang(argc, argv, str_dup(uscore_get()));
+ VALUE str = str_dup(uscore_get());
+ VALUE val = str_chomp_bang(argc, argv, str);
- if (NIL_P(val)) return uscore_get();
+ if (NIL_P(val)) return str;
lastline_set(val);
return val;
}
@@ -2389,7 +2390,7 @@ static VALUE
str_strip(str)
VALUE str;
{
- VALUE val = str_strip_bang(str_dup(str));
+ VALUE val = str_strip_bang(str = str_dup(str));
if (NIL_P(val)) return str;
return val;