summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
Diffstat (limited to 'array.c')
-rw-r--r--array.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/array.c b/array.c
index 010afd9a39..d0f6977a13 100644
--- a/array.c
+++ b/array.c
@@ -17,6 +17,7 @@
#include "st.h"
VALUE rb_cArray;
+static ID cmp;
#define ARY_DEFAULT_SIZE 16
@@ -729,6 +730,20 @@ to_ary(ary)
return rb_convert_type(ary, T_ARRAY, "Array", "to_ary");
}
+VALUE
+rb_ary_to_ary(obj)
+ VALUE obj;
+{
+ if (NIL_P(obj)) return rb_ary_new2(0);
+ if (TYPE(obj) == T_ARRAY) {
+ return obj;
+ }
+ if (rb_respond_to(obj, rb_intern("to_ary"))) {
+ return rb_convert_type(obj, T_ARRAY, "Array", "to_ary");
+ }
+ return rb_ary_new3(1, obj);
+}
+
extern VALUE rb_output_fs;
static VALUE
@@ -958,8 +973,6 @@ rb_ary_reverse_m(ary)
return rb_ary_reverse(rb_obj_dup(ary));
}
-static ID cmp;
-
static int
sort_1(a, b)
VALUE *a, *b;