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

Zurück zum Archiv-Index

Takeshi Komiya katsu****@dd*****
2004年 12月 31日 (金) 23:33:11 JST


  小宮です。

  pack の仕様が変化したのか、[nil].pack('S') が失敗するために
  exerb の各所でエラーが起きるようです。
  ('S' だけでなく、数値変換全般('L' や 'N' など)で発生するようです)

  % ruby -e 'p [nil].pack("S")'
  -e:1:in `pack': cannot convert nil into Integer (TypeError)
          from -e:1


  とりあえず、pack('S') や pack('L') している箇所に nil がわたらないように
  強引に nil => 0 という変換をした結果、a.rb は動作するようになりました。
  (他に exerb サンプルの exception.rb, msgbox.rb も確認しました)
  adhoc な修正ですが、パッチを添付します。

  参考までにどうぞ。

Keisuke Minami wrote:
> こんばんは。三並と申します。
> 
> Rubyを1.8.2アップグレードして、exerbを使ってみたところ
> エラーが出てしまったので報告させていただきます。
> とりあえず、原因とかは調べられていないので報告だけです。
> 
> テストしたのはこんなスクリプトです。
> a.rb
> ----
> #! ruby -Ks
> p 1
> ----
> 
> 以下は、エラーの表示
> 
> D:\>ruby -r exerb/mkexr a.rb
> 1
> 
> D:\>ruby "C:/Program Files/ruby-1.8/bin/exerb" a.exr
> C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/win32/struct/image_dos_header.rb
> :58:in `pack': cannot convert nil into Integer (TypeError)
>         from C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/win32/struct/image_dos_header.rb
> :58:in `pack'
>         from C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/win32/struct/base.rb:25:in
> `size'
>         from C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/win32/struct/base.rb:30:in
> `read'
>         from C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/win32/struct/base.rb:21:in
> `read'
>         from C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/win32/pe_file.rb:40:in `read'
>         from C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/win32/pe_file.rb:28:in `read'
>         from C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/win32/pe_file.rb:32:in
> `new_from_binary'
>         from C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/resource.rb:47:in
> `new_from_pe_binary'
>         from C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/executable.rb:20:in `initialize'
>         from C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/executable.rb:27:in `new'
>         from C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/executable.rb:27:in
> `new_from_file'
>         from C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/executable.rb:27:in `open'
>         from C:/Program
> Files/ruby-1.8/lib/ruby/site_ruby/1.8/exerb/executable.rb:27:in
> `new_from_file'
>         from C:/Program Files/ruby-1.8/bin/exerb:51:in `main'
>         from C:/Program Files/ruby-1.8/bin/exerb:131
> 
> D:\>ruby -v
> ruby 1.8.2 (2004-12-25) [i386-mswin32]
> 
> D:\>ruby "C:/Program Files/ruby-1.8/bin/exerb" --version
> Exerb 3.2.0
> 
> よろしくお願いします。
> 
-------------- next part --------------
文字コード指定の無い添付文書を保管しました...
名前: patch
Download 


exerb-developer メーリングリストの案内
Zurück zum Archiv-Index