ものがたり(旧)

atsushieno.hatenablog.com に続く

sjisで書かれたコードがmcs正しくコンパイル出来ないので、しばらくEncoding実装と格闘していたが、どうもEncodingの問題じゃなくてmcsのバグなんじゃないかという気がしてきた。そこでMS.NET上でmcs.exeを試してみたら、やっぱり同じエラーになる。cscでは通るので、どうやらmcsの問題のようだ。

そんなわけで、mcsのbug huntingを始めてしまったのだけど、すごい数だよこりゃ。助けてくれぇ…

sjisのコードがコンパイルできない原因は多分SeekableStreamReaderだと思うのだけど、というかほぼ確信しているのだけど、何かコレ直すしかねえのかなあと無駄に考えこんでいる。内部でけっこうトリッキーなことをやっているのだ。このGetByteCount()の呼び出しは明らかに無駄が多いぞ…

…って思ってたら、デフォルトのエンコーディングがiso-8859-1固定になってたorz 何でだー

さて、デフォルトエンコーディングをCultureInfo.CurrentCulture.TextInfo.AnsiCodePageから取得するパッチは投げたものの、やっぱりmcsはmcsで独自の問題を抱えている雰囲気である。I18N.CJK.dllに問題がないことは確認してあるし、そもそも.NET Frameworkでmcs.exeを動かしても同じ問題が発生するので、おそらくSeekableStreamReaderがやはりおかしいのだろうと推測している。とりあえず試しているのはtwintailで、DllImportしまくりの素敵コードなので、本当にmcsのテストでしかないのだけど、とりあえず似たようなのを会社の業務(??)でも経験しているので、ここは駆逐しておきたいところである。