非画像ファイル読み込みで例外
furafura  2014/10/24(Fri) 10:10
お世話になっております。

ほとんどのアプリケーションでは問題にならないと思われる話です。
一応御報告致します。

サンプル→画像ビューア
を試したところ、
手持ちの非画像ファイルをD&Dしてしまった際、
例外エラーが発生しました。

このファイルは、具体的にはSilkypixというRAW現像ソフトが吐き出した、一時ファイルの残骸でして、何らかの事情で画像ファイルとして誤認識されたものと考えます。
この一時ファイルは
$SILKYPIX$TMP0091.$$$
という感じの名称で、他のものも含めるとサイズが20-30MBである事から、Silky内部で用いる画像データである可能性が高いと思われます。

画像判定には限界があるかも知れず、アプリ制作側としては、必要なら拡張子等で弾けば良いとは思いますが、Siv3Dの現公開版では、大半のファイルは非対応画像ファイルが弾けているようなので、お伝えする事に致しました。

HDD内の全てのファイルを読み込み対象とすれば、他にも今回のようなエラーが発生する可能性はあるように思いますが、例外エラーを回避する方法がございましたら、よろしければ教えて下さい。
Reputeless  2014/10/24(Fri) 15:17
ご報告ありがとうございます。

特定の画像フォーマットと類似するヘッダデータを持つファイルに対して誤認識が発生します。
拡張子のチェックで、ほとんどの場合は回避できると思います。
コードは次を参考にしてください。
https://gist.github.com/Reputeless/1d343e2976d59b5e7ff0

今回のクラッシュについては原因を調査します。
該当ファイルの先頭 16 バイトのデータを調べ、ご返信ください。
以下のプログラムで簡単に調べられます。
https://gist.github.com/Reputeless/668ce6802a57fe8db295
furafura  2014/10/25(Sat) 00:49
2つのファイルで試しましたが、先頭16バイトは同じでした。
49 49 2a 00 08 00 00 00 10 00 00 01 04 00 01 00

必要があれば、更に情報をお出しするよう努めます。
Reputeless  2014/10/25(Sat) 09:43
ご協力ありがとうございます。

49 49 2a 00 は TIFF のヘッダなので、実体は特殊な TIFF か、TIFF のアーカイブだと思われます。
画像のロードの信頼性を上げるためには前述の拡張子チェックを入れてください。

お手数ですが、例外のメッセージをコメントしていただけると、
今回のようなケースへの対策の実装に役立ちます。よろしくお願いいたします。
furafura  2014/10/25(Sat) 18:00
了解致しました。念のため、今回のメッセージですが、

ハンドルされない例外が 0x008E3F12 (Siv3D(XXXXX2014)1.exe) で発生しました: 0xC0000005: 場所 0xCDCDCDCD の読み取り中にアクセス違反が発生しました。

という感じでした。
ありがとうございました。

- WEB PATIO -