午前中は昨日の続きでデータを効率的に格納する方法についてあれこれ考えた。おおざっぱな方針を立ててみたが、はたしてそれで十分か、実装にどのくらいの時間がかかるかはまだ不明。ただしいずれにせよそこそこ影響の大きな変更になりそうなので、もう少し時間をかけて基本方針を練ったほうがよいだろう。
以降昼休みを破産で午後3時頃までデータ格納に関するクラスのリファクタリング。上記の通り、近いうちに大きな変更が起こりそうなので、その時のためにコードをシンプルにしておく。今日は、不要な関数を削除したり、上位クラスに移動したりした。
3時頃からは少し前に紛れ込んだと思われるバグの退治。ある手順でウィンドウを表示してから測定を開始すると、高い確率でメモリ保護エラーが起こってソフトウェアが固まるという悪質なバグである。高速な処理をしている最中に起こるので、ステップ実行で地道に調べるのが厄介なバグだったのだが、再現条件がわかってきたので本格的に原因を調べた。ちまちまと地道に問題をしぼり込んでいって、最終的に、memcpyでコピーする領域のバイト数が本来の2倍になっていたせいで範囲外のメモリ領域が破壊されていることがわかった。これはもともとコピーする配列がlong型であったのを、short型に変更したときにサイズの計算を変更しなかったせいである。longをshortの別名に定義したInnerDataTypeに書き換えて修正完了。
夕方、つきあいで実験。私がずっと継続して開発している測定コントローラが、開発中の測定ヘッドの評価に使われていたのでその手伝い。コントローラと測定ソフトの使い方を教えているうちになりゆきで一緒に実験をすることになった。