こんにちは、クボタです。

Cのモジュールが持つ配列を ruby に渡したいのですが
うまく行きません。

やりたい事は、C側にある配列データを、ruby 側から
それを取り出すCの拡張モジュールを呼び出して参照
する。  という事なのですが...。

ソースは以下の通りです。

----< test2.c >--------------------
  #include "ruby.h"

  static VALUE arybuf;

  static VALUE
  func_test2(obj)
      VALUE obj;
  {
      VALUE  testbuf[] = {1,2,3,4,5,6,7,8,9,0};

      arybuf = rb_ary_new4(10, testbuf);
      return arybuf;
  }

  void
  Init_test2()
  {
      VALUE mTEST2 = rb_define_module("TEST2");
      rb_define_module_function(mTEST2, "test2", func_test2, 0);
  }
---------------------------------

----< test.rb >---------------------
  require 'test2'
  include TEST2

   print "test start\n"
   ary = TEST2::test2()  # Cの配列を取り出したつもり
   ary.each{|i|
       print "ary = ", i,"\n"
   }
---------------------------------

この test.rb を実行すると、
  ary = 1
  ary = 2
    :  :
  ary = 9
  ary = 0

と表示されるのを期待していましたが、以下のように表示
されます。

  ary = 0
  ary = true
  ary = 1
  ary = nil
  ary = 2
  test.rb:7: [BUG] Segmentation fault
  ary = IOT trap/Abort

期待した動作をさせるには、どこを修正すればよいかご指導
お願いします。