So-net無料ブログ作成

改札機のバグ(その2) [プログラミング]

昨日のエントリー http://blog.so-net.ne.jp/nakagami/2007-10-12-1 の続き

「送信データがある長さ、ある件数」の時に発生する
http://www.itmedia.co.jp/news/articles/0710/12/news117.html

予想:データのブロック数を数えるところで間違えてる。
例えば、総データ数が total_bytes に入ってきたときに、1024 バイトのブロック単位で全部で何ブロック必要か?ただし、データの最後に 1 byte 追記できる余地を確保する(もしくは、データの最後にターミネータ \0 を付ける)。
って感じの計算をするところで

num_block = total_bytes / 1024 + 1;

って計算してて 1024 の倍数の時にうまくいかない(追記用の余地がない)、
とかそれに類する不具合では。
すっきりかけないけど、こんな↓感じで計算すればいいのかな
num_block = total_bytes / 1024 + (total_bytes % 1024 ? 1: 2);

いずれにせよ、特定のデータ長の時っていうんだから、こういう境界問題だな。

こんな↓陰謀説ではない、と断言できる。
http://b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20071012195912
やる気がなくたって・・・むしろやる気がないほうが、こんな不具合いくらでも仕込める。
恨みで起動しない(読み込み無限ループ)なんてやるくらいなら、もっと派手に課金を10倍取るとか、逆に課金しないとかしないほうがよかろう。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0