最新版1.01のダウンロードはこちら
http://mbed.org/media/uploads/nameless129/mbed_autotransfer1.01.zip
・バグの原因について
前回使用したドライブをINIファイルから読み込み、一致したものがあればそれを自動で選択するようにしていますが、その部分がバグになっていました。
下記ソースのforeach~loop間で前回使用したドライブ(下記ソースのLastUseDrive)と一致するドライブがあるか調べています。
初回起動時はLastUseDriveの中身が空っぽなのでこのまま条件成立せずループを抜ける・・・はずでしたが、このループはdriveInfoの要素数だけ繰り返すようになっています。
driveInfoの要素数は10です。
よってバグは、driveInfoの10番目の要素の中身が空っぽ=検出したリムーバブルディスクが10台未満であれば起きることになります。
カウンタは9まで回るので、リストボックの表示を、9番目に検出したドライブにしようとします(objprm命令)
9番目が存在しない場合、どうやら1番目を表示するようで、見かけ上はリムーバブルディスクが選択されているように見えますが、存在しないドライブを選択していたのです。
よって、その状態でドライブを変更せず使用するとバグが発生していました。
以上を踏まえてソースを修正しました。
①そもそもループする回数はドライブを検出した台数分にする
②INIファイルに記録されているLastUseDriveが空欄なら条件が成立しないようにする
って、今書いてて思いましたが、LastUseDriveが空欄なら即ループを抜けるようにすればよかったですね。。。
何かしら修正する機会があればその時に修正します。
最新版1.01のダウンロードはこちら
http://mbed.org/media/uploads/nameless129/mbed_autotransfer1.01.zip
0 件のコメント :
コメントを投稿