BlatJとCOM版BlatJで、2バイト目が0x5cになる文字を含むファイル名の添付ファイルを指定したとき、送信できない、または、ファイル名が不正になるという問題が起きていました。
これを解消した版を作成しました。
原因と対策 §
strrchrで0x5cを探すというありがちなコードでトラブルを起こしていました。
BlatJのみ、2箇所あるstrrchrの片方だけ対策済みでしたが、もう片方は対策されていなかったので誤動作していました。
すべて、strrchrはなく_mbsrchrを呼ぶように変更しました。
これで上手く動いているようです。
それにしても…… §
いかにもベタベタでありがちなバグで泣けてきます。
まあ、こちらの確認不足といえばその通りですが。
こういう問題が起こらない世界(文字列はUnicodeベースで扱うので、2バイト目が0x5cの文字というトラブルが起こりようがない世界)に移住済みの身からすると、なかなかに泣けますね。
明らかにCよりC#で書いた方がトラブルが減ると思いますが、世間は実績の無いものは怖いと言って、明らかに危険なC(あるいはC++)で書いたプログラムの方を信用してしまうのが少し悲しいところです。
ちなみに、久しぶりに起動したVisual C++ 6.0の使い方は、けっこう忘れていました (汗)。