2002-06-16

念が通じました! 不具合の原因についての詳細な解説も読めます。……なるほど、GetKc関数に値を返さない道すじがありましたか。……って昨日はそのあたり(GetKc関数付近)を読んでたはずなんですが、どうやら目が節穴だったようです。

じつは情けないことがもうひとつ。僕の調べた限りではこれも立派な原因のうちの一つですと突っ込まれてしまいましたが、昨日の記事でmeta要素のhttp-equiv属性が二重引用符で囲まれていな
いと起きる
のかな?」と考えたんですが、いまいじってみるとどうもそうでもないみたい
、と書いたことについて。

その後ynp4の解説を読んでいたら、急に思いあたるふしが出てきたので、オリジナルだと信じきっていたxhtml.txcの変更履歴をセーフファイルで確認してみたら、4月6日に編集したという痕跡が。変更内容は__on_txFrameNew関数内の以下の部分、

GetHeaderStr(text,"meta>[^>]*http-equiv=¥"Content-Type¥"","content",sz,CCHWORD,0,0)

を次のようにというもの。

GetHeaderStr(text,"meta>[^>]*http-equiv=¥"?Content-Type¥"?","content",sz,CCHWORD,0,0)

……すみません、自分で対処して忘れてたみたいです(苦笑)。当時のHTMLソースをひっぱりだしてきても再現しないのも当然です(とはいえそのときもGetKc関数の問題点には気づいてなかったんですが)。お騒がせしました……。

ということは、この状態でynpのパッチもあてていたわけで、考えてみると恐ろしいことなんですが……。

もとい、本題。ここまで愚挙を露呈しておいてからいうのも説得力に欠けるんですが(笑)、xhtml.txcは(というかその前身のhtmlcmd.txcから)GetKcのほかにも返り値の型が違ってたり、値を返さない関数で値をreturnしてたり、というのがけっこうあるので、このさいynp版でそういうのを一掃してしまってはどうでしょうか。

少なくとも、ynp4版xhtml.txcでは5095行目にある、wndImeSetOpen(hwnd,0);というのはwndImeSetOpen(text->hwndtext,0);でないとまずいと思うので(hwndは宣言されてないのでint型に自動定義されている)ここだけでも……。