summaryrefslogtreecommitdiffstats
path: root/array.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-10-20 07:10:23 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-10-20 07:10:23 +0000
commitf137a720e935dd8461a6153c83b78b6cc269c744 (patch)
tree25f6e2a15a8e14b12ac653ac365d2fe34be0abd4 /array.c
parent6eded0bb87a431f53f66aab0b306427b051f83c7 (diff)
downloadruby-f137a720e935dd8461a6153c83b78b6cc269c744.tar.gz
ruby-f137a720e935dd8461a6153c83b78b6cc269c744.tar.xz
ruby-f137a720e935dd8461a6153c83b78b6cc269c744.zip
marshal load GC protect
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'array.c')
-rw-r--r--array.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/array.c b/array.c
index 793ea13ba..0615da755 100644
--- a/array.c
+++ b/array.c
@@ -930,8 +930,8 @@ rb_ary_sort(ary)
VALUE ary;
{
ary = rb_ary_dup(ary);
- if (RARRAY(ary)->len == 0) return ary;
- return rb_ary_sort_bang(ary);
+ rb_ary_sort_bang(ary);
+ return ary;
}
VALUE
@@ -1365,10 +1365,9 @@ static VALUE
rb_ary_uniq(ary)
VALUE ary;
{
- VALUE v = rb_ary_uniq_bang(rb_ary_dup(ary));
-
- if (NIL_P(v)) return ary;
- return v;
+ ary = rb_ary_dup(ary);
+ rb_ary_uniq_bang(ary);
+ return ary;
}
static VALUE
@@ -1397,10 +1396,9 @@ static VALUE
rb_ary_compact(ary)
VALUE ary;
{
- VALUE v = rb_ary_compact_bang(rb_ary_dup(ary));
-
- if (NIL_P(v)) return ary;
- return v;
+ ary = rb_ary_dup(ary);
+ rb_ary_compact_bang(ary);
+ return ary;
}
static VALUE
@@ -1442,10 +1440,9 @@ static VALUE
rb_ary_flatten(ary)
VALUE ary;
{
- VALUE v = rb_ary_flatten_bang(rb_ary_dup(ary));
-
- if (NIL_P(v)) return ary;
- return v;
+ ary = rb_ary_dup(ary);
+ rb_ary_flatten_bang(ary);
+ return ary;
}
void