From: Tomoyuki Chikanaga Date: 2011-01-12T19:26:04+09:00 Subject: [ruby-dev:43018] [Ruby 1.9-Bug#4260] some SEGVs in test/ruby/test_enum.rb チケット #4260 が更新されました。 (by Tomoyuki Chikanaga) 手元では SEGV は起きないのですが、valgrind にかけると不正なメモリアクセスが検出されていました。 以下で valgrind の警告は消えたのですが、効くでしょうか? diff --git a/enum.c b/enum.c index d17d9d4..c891d71 100644 --- a/enum.c +++ b/enum.c @@ -802,13 +802,15 @@ sort_by_i(VALUE i, VALUE _data, int argc, VALUE *argv) static int sort_by_cmp(const void *ap, const void *bp, void *data) { - VALUE a = *(VALUE *)ap; - VALUE b = *(VALUE *)bp; + VALUE a; + VALUE b; VALUE ary = (VALUE)data; if (RBASIC(ary)->klass) { rb_raise(rb_eRuntimeError, "sort_by reentered"); } + a = *(VALUE *)ap; + b = *(VALUE *)bp; return rb_cmpint(rb_funcall(a, id_cmp, 1, b), a, b); } ---------------------------------------- http://redmine.ruby-lang.org/issues/show/4260 ---------------------------------------- http://redmine.ruby-lang.org