Task Log登録エラーの対処法

現時点での最新CVSを拾ってくると、2.0.1と違って、以下のエラーが発生する。

あるプロジェクトにタスクを登録して、そのタスクにログを登録しようと「update task」を押すとFatal error: Call to a member function getDay() on a non-object in /var/www/html/dotproject/classes/date.class.php on line 113と怒られる。

getDay()でエラーになっている関数はclasses/date.class.phpのdateDiff()関数なんだけど、この関数自体は最新CVSも2.0.1も変わらない。と言うことは、これを呼んでいる元が悪いのであろうと推測できる。そもそも、getDay()はメソッドのはずだけど、このエラーが主張しているのは、「オブジェクトではないものにメソッドを適用しようとしている!」というものと考えられる。

と言うことで呼び元を探してみると、それらしきmodule/tasks/do_updatetask.phpがあるからdateDiffで検索してみたら、確かにあったけど、$task_end_dateが渡されている。この変数は確かにどこにもオブジェクトとして定義されていないから単なる変数のようだ。これじゃ、エラーもでるわな。それにしても、このような重要なエラーが発生するとは、何かがおかしい。

dotProjectのCVSをwebでつらつらと眺めていたら、/module/tasks/do_updatetask.phpであることに気がついた。stable_2系の最新をとってきたけど、開発中の最新バージョンではない、ということ。head系は避けろと言われているけど、main系がどうやら現在開発中のモジュールのようで、モジュール間のバージョン不整合が起きているっぽい。要するに、CVS(stable_2系)の最新よりも、時にはCVS(main系 or head系)のほうが同期が取れている、のである。

試しに、do_updatetask.phpをCVSのwebアクセスからダウンロードして置き換えてみると、タスクログを登録してもエラーが表示されなくなった。そーかー、そーゆーわけだったのねー。

これからはCVSをウォッチして、不具合があったら最新版が出ていないか確認していこう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です