PHP

php-master-changes 2018-10-31

今日は ext/xml のテストコードの改善、Windows での ftruncate() のバグ修正があった!

地味に 3 ヶ月続いており、もう 3 ヶ月くらい続けると心の故郷で古くから言い伝えられてきた習わし通り「半年 ROM れ」をやったことになる奴。


2018-10-31


cmb69: Fix and improve test case


weltling: Fixed bug #77081 ftruncate() changes seek pointer in c mode


  • https://github.com/php/php-src/commit/8827cc34cf8c77828330182ee1e6d0b9438d489c


  • fopen() で c を指定したファイルポインタに対して ftruncate() をかけると、シーク位置が変なところへいく問題の修正

  • 元々 Windows 環境で ftruncate() が 2GB 以上のサイズのファイルで失敗する、という別の問題があった

  • これを解決するため、(PHP 側の)ftruncate() で指定される終点へ SetFilePointerEx() でファイルポインタを移動して SetEndOfFile() をかける修正が入った

  • が、これにより ftruncate() 呼び出しでファイルポインタが移動してしまう新たな問題が生まれ、ファイルポインタの古い位置を覚えておいて復帰するよう別の修正が入った

  • が、これが実際にはファイルポインタの古い位置でなく元々のサイズでのファイルの終端位置へ復帰するような挙動だったため、ちゃんと古いファイルポインタの位置へ復帰するよう修正


weltling: Fix error condition