summaryrefslogtreecommitdiff
path: root/enum.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-10-11 12:30:48 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-10-11 12:30:48 +0000
commit1b03efee58ee4c825b278a7bcb4ac80e41e7c18a (patch)
tree816ef7c640e729eeb44447211cb3be2071ee86c6 /enum.c
parent32f264bfef9ef6eb96c791ee33ffad8d5e461578 (diff)
* array.c, enum.c, eval.c, util.c: safer function pointer usage.
fixed: [ruby-core:06143] * util.h (qsort): removed the definition incompatible to ANSI. fixed: [ruby-core:06147] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9374 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enum.c')
-rw-r--r--enum.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/enum.c b/enum.c
index 662e8da141..2229f49da5 100644
--- a/enum.c
+++ b/enum.c
@@ -433,10 +433,10 @@ sort_by_i(VALUE i, VALUE ary)
}
static int
-sort_by_cmp(NODE **aa, NODE **bb)
+sort_by_cmp(const void *ap, const void *bp, void *data)
{
- VALUE a = aa[0]->u1.value;
- VALUE b = bb[0]->u1.value;
+ VALUE a = (*(NODE *const *)ap)->u1.value;
+ VALUE b = (*(NODE *const *)bp)->u1.value;
return rb_cmpint(rb_funcall(a, id_cmp, 1, b), a, b);
}
@@ -527,7 +527,7 @@ enum_sort_by(VALUE obj)
RBASIC(ary)->klass = 0;
rb_iterate(rb_each, obj, sort_by_i, ary);
if (RARRAY(ary)->len > 1) {
- qsort(RARRAY(ary)->ptr, RARRAY(ary)->len, sizeof(VALUE), sort_by_cmp, 0);
+ ruby_qsort(RARRAY(ary)->ptr, RARRAY(ary)->len, sizeof(VALUE), sort_by_cmp, 0);
}
if (RBASIC(ary)->klass) {
rb_raise(rb_eRuntimeError, "sort_by reentered");