From: sheepman Date: 2007-03-12T00:14:20+09:00 Subject: [ruby-dev:30531] DL::PtrData#to_a dumps core こんばんは、sheepman です。 DL::PtrData が以下のようにすると core を吐きます。 PtrData クラスはポインターのラッパーですから、扱い次第では core を吐いてしまうのは仕方がないと思うのですが、以下の場合に core を 吐いてしまうのは、バグなんじゃないかと思います。 仕様なんでしょうか? とりあえず、パッチを添付します。 $ cat t2.rb require "dl" sp = ['a', 'b', 'c'].to_ptr sp.to_a('S') $ ruby-1.8 -v t2.rb ruby 1.8.6 (2007-03-05 patchlevel 5000) [i686-linux] t2.rb:3: [BUG] Segmentation fault ruby 1.8.6 (2007-03-05) [i686-linux] zsh: abort ruby-1.8 -v t2.rb $ svn diff ext/dl/ptr.c Index: ext/dl/ptr.c =================================================================== --- ext/dl/ptr.c (revision 12023) +++ ext/dl/ptr.c (working copy) @@ -344,7 +344,7 @@ n = data->size / sizeof(void*); break; case 'S': case 's': - for (n=0; ((void**)(data->ptr))[n]; n++) {}; + n = data->size / sizeof(char*); break; default: n = 0; -- sheepman / TAMURA Takashi sheepman@sheepman.sakura.ne.jp