WindowsXPでruby 1.8.3 (2005-09-21) [i386-mswin32]から Libiconv DLL 1.10-20051016 for Windows を使うと、rb_sys_fail(iconv)。
C:\Tmp>c:\ruby\bin\ruby iconvtest ["ABCDE"] iconvtest:3: [BUG] rb_sys_fail(iconv) - errno == 0 ruby 1.8.3 (2005-09-21) [i386-mswin32] This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.
1.9.1だとIconv::IllegalSequenceなので、Rubyでrescue出来る。
C:\Tmp>c:\ruby\bin\ruby iconvtest ["ABCDE"] iconvtest:3:in `iconv': "\342\200\234" (Iconv::IllegalSequence) from iconvtest:3
iconvする前にIllegalSequenceでないことを確認する必要があるとしたら、かなり厳しい。
テストケースはこれ。
C:\Tmp>type iconvtest require 'iconv' p Iconv.iconv("ISO8859-1", "UTF-8", "ABCDE") p Iconv.iconv("ISO8859-1", "UTF-8", "\342\200\234")
bsfilterがpop proxyで落ちるという報告 の原因は、多分これ。
Iconv::Failureからは、successとfailedというメソッドで変換済みの部分と失敗したところ以降の部分が得られます。
iconv 1.10の場合、例外があがらずにruby処理系が異常終了しているようで、困っています。
1.8と1.9で同じiconv.dllを使ってますか?
rubyは1.8.3で固定、iconv.dllは1.9.1と1.10とで変えています。
じゃあiconv 1.10でエンバグしたんでしょう。<br>めんどくさいので、iconv(3)がバグってる場合はIconv::BrokenLibrary例外を投げることにします。
iconv 1.10の問題なのか、KoriYa.netでのbuildが原因なのか、切り分けたいところなのですが。
ISO8859-1とUTF-8の変換なら、KoriYa.netでのpatchは関係ないように見えます。<br>あとで確認します。