▽20020108b
#日記
マターリと仕事して帰宅...しようとしたら麹町駅のホームで社から電話で, 呼び戻されてクソプログラムの解析をさせられることに.
ここに何度も書いている「森グラム」であるが, 今回のはかなりキツかった.
PHP3 で,ループして配列のキー毎に処理をするコードを書きたかったらしいのだけど, このロジックが明らかにおかしい. まず,配列なんだから while each() を使えば foreach のような機能が実現できるのだけど, なぜか for を使っている.で,それなら条件を $i < count( $array ) とかにしておけば, そこに到るまでに配列がどうなっていても確実に配列の個数だけループしようってものだが, 条件式の右辺はどこか別の場所にあるループインデクス変数の残骸だ.
で,まずこのループ,ループインデクス変数がグローバル変数だ. で,これを配列の要素にアクセスするインデクス変数として使うかと思いきや, 配列に使う変数は別のグローバル変数. この別の変数のはどこで代入してるのかと思って探したらループ内に見つからない. よく見るとループ先頭で他の関数を呼びだしていて,その中でグローバル変数の値を更新している! 更新に使われる元ネタは,さっきのループのループインデクス変数.ぐはあ.
...という相変わらずの高度な暗号化によりえれー苦労したわけだが, それ以上に疲れたのは,これだけやって結果的にはクライアントのデータ入力ミスが原因だったってことだ. まぁ変にバグなんか見つかっても修正したくないから助かったといえるが.