[exerb-dev:0449] Re: 1.8.2でエラー

Back to archive index

Masahiro Kitajima katon****@katon*****
2005年 1月 2日 (日) 22:21:59 JST


かとんぼです。

 1.8.2 版の exerb コアのビルドを試みていて、テストしようとしてこの問題に
遭いました。^^;
 変わったのはごく最近みたいですね。

  C:\TMP>ruby -ve "p [nil].pack('S')"
  ruby 1.8.2 (2004-11-09) [i386-mswin32]
  "\000\000"

  pack.c 1.62.2.7 2004/11/10 16:17 matz
  * dir.c (rb_glob2): do not allocate buffer from heap to avoid
    memory leaks.use string object for buffering instead.
    [ruby-dev:24738]
  
  * dir.c (join_path): ditto.
  
  * io.c (io_read): external input buffer may be modified even after
    rb_str_locktmp().[ruby-dev:24735]
  
  * dir.c (fnmatch): p or s may be NULL.[ruby-dev:24749]

 pack.c をこの版に換えると現在と同じ結果になりました。

  C:\TMP>ruby -ve "p [nil].pack('S')"
  ruby 1.8.2 (2004-11-09) [i386-mswin32]
  -e:1:in `pack': no implicit conversion from nil to integer (TypeError)
          from -e:1

 それはともかくとして、VC++ 6.0 などがある事が前提ですが、mswin32版のコア
とランタイムは次のような手順でビルド出来ているようです。
 まだ手元では、上記の問題でこれを使った .EXE 生成に至ってないので、検証は
できていないのですが。

(1) exerb-3.2.0.tar.gz を展開。
(2) exerb-3.2.0\src\ に ruby-1.8.2.tar.gz を展開。
(3) exerb-3.2.0\src\ruby-1.8.2\win32\ で、configure.bat 実行後、
    nmake config して、config.h を作り、exerb-3.2.0\src\ruby-1.8.2\ にコピ
    ーする。
(4) exerb-3.2.0\project\ の ruby181* ディレクトリをコピーして ruby182* デ
   ィレクトリを作成。
(5) 各 ruby182* ディレクトリで、*.dsw ファイルを削除。ruby181*.dsp ファイ
   ルを ruby182*.dsp に rename。
(6) 各 *.dsp ファイル中の "ruby181" を "ruby182" に置換。"ruby-1.8.1" を 
   "ruby-1.8.2" に置換。
(7) exerb-3.2.0\project\exerb\exerb.dsp ファイル中の "ruby-1.8.1" を 
   "ruby-1.8.2" に置換。
(8) exerb-3.2.0\project\exerb\exerb.dsw でワークスペースを開き、Release ビ
   ルド。
(9) 各 ruby182*.dsp ファイルでワークスペースを開き、Release ビルド。

 以上で、exerb-3.2.0\data\exerb\ 以下に exerb32.dll と ruby182*.exc ファ
イルが得られます。

-- 
北島雅博(かとんぼ)




exerb-developer メーリングリストの案内
Back to archive index