php bug

PHPを5.2.10にしてから数日。
5.3系でおきていたdeprecatedも出なくなりそれなりに動いていると思っていました。

しかーし。ふとBlogに投稿してみたときに不具合が。
「投稿したものが表示されない」
んー。なぜに。

管理画面で確認してみたら投稿自体はあるものの、日付が「0000-07-24」とかになっている。

DBの中身も確認してみたら、本当に「0000-07-24」とかになっていた。
てことで表示上の問題でもない。

DB格納時にレンジが外れていると0000-00-00とかになるはずなのでDBのせいではないですね。綺麗に年だけだし。

WordPressのバージョンも変えているので、WordPressのせいかともおもったのですが、そんな報告は見当たらず。

発生日付をみてみると、PHP 5.2.10に上げた日から発生している模様。

で、php.netで調べたらこんなのありました。

http://bugs.php.net/bug.php?id=49079

ははぁ。
ext/date/php_date.c
こいつか。

ちなみに当該箇所は各バージョンではこの様になってました。

PHP 5.2.9)
case 'Y': length = slprintf(buffer, 32, "%s%04d", t->y < 0 ? "-" : "", abs((int) t->y)); break;

PHP 5.3.0)
case 'Y': length = slprintf(buffer, 32, "%s%04lld", t->y < 0 ? "-" : "", llabs((timelib_sll) t->y)); break;

PHP 5.2.10
case 'Y': length = slprintf(buffer, 32, "%s%04ld", t->y < 0 ? "-" : "", llabs(t->y)); break;

なぜにこんなとこが毎回毎回変わるのかと・・・

とりあえず、5.2.10の当該箇所を書き換えてmakeし直して完了〜。

その後は今までどおり2009-07-24となっております!