2005-11-06(Sun) [長年日記]

_1 [Ruby] iconv.dllでrb_sys_fail(iconv)

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で落ちるという報告 の原因は、多分これ。

_2 [FreeBSD] firefox-1.0.7_4,1

gtk, pango8.6の更新のせいか、firefoxが落ちるようになった。

/usr/libexec/ld-elf.so.1: /usr/X11R6/lib/firefox/components/libgfx_gtk.so: Undefined symbol "pango_x_font_map_for_display"

WITHOUT_XFT=yesでmakeするとダメっぽい。firefoxだけanti-aliasがかかっていると気持ち悪いので、なんとかしたいのだけど。

本日のツッコミ(全7件) [ツッコミを入れる]
_ なかだ (2005-11-06(Sun) 13:10)

Iconv::Failureからは、successとfailedというメソッドで変換済みの部分と失敗したところ以降の部分が得られます。

_ nabeken (2005-11-06(Sun) 13:53)

iconv 1.10の場合、例外があがらずにruby処理系が異常終了しているようで、困っています。

_ なかだ (2005-11-06(Sun) 14:17)

1.8と1.9で同じiconv.dllを使ってますか?

_ nabeken (2005-11-06(Sun) 14:26)

rubyは1.8.3で固定、iconv.dllは1.9.1と1.10とで変えています。

_ なかだ (2005-11-06(Sun) 15:44)

じゃあiconv 1.10でエンバグしたんでしょう。<br>めんどくさいので、iconv(3)がバグってる場合はIconv::BrokenLibrary例外を投げることにします。

_ nabeken (2005-11-06(Sun) 16:03)

iconv 1.10の問題なのか、KoriYa.netでのbuildが原因なのか、切り分けたいところなのですが。

_ なかだ (2005-11-07(Mon) 00:05)

ISO8859-1とUTF-8の変換なら、KoriYa.netでのpatchは関係ないように見えます。<br>あとで確認します。


トップ «前の日記(2005-11-05(Sat)) 最新 次の日記(2005-11-07(Mon))»