php-master-changes 2019-04-10

今日は新シリアライズ機構でのメモリリーク修正とエラーメッセージの修正、SPL のシリアライズ化可能オブジェクトの新シリアライズ機構への対応、JIT のレジスタ割当判定コードの簡素化と不要なジャンプ命令生成の削除、SPL の不要コードの削除、imap の実装修正、pgsql の use after free の修正とテストの修正、typo の修正、zlib / posix のテストの修正、Windows でファイルキャッシュ有効時の  phar:// の include の扱い修正、Windows でのパスの正規化処理修正、Windows で opcache.protect_memory 用に VirtualProtect() を使うようにする修正があった！

# 2019-04-10
## nikic: Fix leak on error in new serialization mechanism
- https://github.com/php/php-src/commit/b870685c5b055ff0986b85fb900136e2752c2ae5
- [7.4~]
- [先日入った](https://qiita.com/sj-i/items/2fbf5903a0559eb6f9c9#nikic-implement-new-custom-object-serialization-mechanism)新シリアライズ機構のメモリリーク修正

## nikic: Fixed bug [#77873](https://bugs.php.net/bug.php?id=77873)
- https://github.com/php/php-src/commit/cb145e18b230b59f235855ba976fed14ca531755
- [7.4~]
- __serialize() メソッドが配列を返さない場合のエラーメッセージへ `ClassName::__serialize()` のようにクラス名も付けるよう修正

## dstogov: Don't split basic block after RECV, if function checks type hints
- https://github.com/php/php-src/commit/2980de29f0bf060f9e3f49f4fd101c7a80bffdba
- ext/opcache/jit で、タイプヒントがある場合は RECV 後の basic block を区切らないよう修正

## dstogov: Removed too strict register allocation constraint.
- https://github.com/php/php-src/commit/20548ab506d9e4285706709d364ebaed23895da8
- ext/opcache/jit で、レジスタ割当が可能かのチェックコードを簡素化

## nikic: Fix bug [#77866](https://bugs.php.net/bug.php?id=77866): Port Serializable SPL classes to use __unserialize()
- https://github.com/php/php-src/commit/e2ea0f105c9c6c60b19f2584d72205e5b1fe11e8
- [7.4~]
- ext/spl で、ArrayObject、ArrayIterator、SplDoublyLinkedList、SplObjectStorage を新シリアライズ機構に対応
- 古いのをデシリアライズはできるけど、7.4 でシリアライズしたのを古いバージョンへ持っていくのはダメなので注意

## nikic: Remove redundant $this args in SplObjectStorage implementation
- https://github.com/php/php-src/commit/dc17ca60446c66200f17d430ced538adc7c7d211
- ext/spl で、SplObjectStorage の実装内の冗長な $this の引き回しを削除

## nikic: Use release for regex in imap
- https://github.com/php/php-src/commit/ce5e5b0aa360b001778ff3c8ae21822002fa2c53
- [7.4~]
- ext/imap で、[imap_append()](https://www.php.net/manual/ja/function.imap-append.php) の実装を修正
- internal_date のバリデーション用正規表現を zend_string_free() で解放してたのを zend_string_release() に
- キャッシュ処理で参照カウント足して即解放せずキャッシュのキーに、みたいな奴か

## dstogov: Eliminated unreachable jumps
- https://github.com/php/php-src/commit/d374920e5e020e0b3107fbcdcc3f96b00e053317
- ext/opcache/jit で、不要なジャンプ命令の生成を削除

## nikic: Fix use after free on pg_close() of default connection
- https://github.com/php/php-src/commit/b55715d61a908f7732d5a2bb6b20a105f372014a
- [7.2~]
- ext/pgsql で、[pg_close()](https://www.php.net/manual/ja/function.pg-close.php) での use after free の修正
- 接続を持つ変数がなくなってからのデフォルト接続への pg_close() がアカンかったらしい

## rovast: fix a spell mistake
- https://github.com/php/php-src/commit/231fecee273fe8a2f0570cf58b18fa149a9cd0fa
- [7.4~]
- typo の修正

## nikic: Fix pgsql use after free trying to reuse closed connection
- https://github.com/php/php-src/commit/c7a86a38a3f657ab81163ac794450fc7ada2ba3c
- [7.2~]
- ext/pgsql で、閉じた接続を再利用しようとする use after free の修正

## nikic: Fix 29nb_async_connect.phpt
- https://github.com/php/php-src/commit/8f13599a645a97df940640e9c70f164a92e8743c
- [7.2~]
- ext/pgsql で、29nb_async_connect.phpt の修正
- PGSQL_POLLING_OK 以外で break するのはバージョンまたいで信頼できる挙動にならない気がするよ、ということかな

## nikic: Make zlib include_path tests more robust
- https://github.com/php/php-src/commit/397ee767fd87f240683fead2a768179624ee25f0
- [7.4~]
- ext/zlib で、include_path のテストをより頑丈に
- 元々テストごとユニークなディレクトリを作って中に作るファイル名は同じ、だったのをファイル名も別にした

## nikic: Remove posix_getlogin() check from posix_getpwnam() test
- https://github.com/php/php-src/commit/33a149afba405ca39818cf14ad9d404bb5927d1d
- [7.4~]
- ext/posix で、[posix_getpwnam()](https://www.php.net/manual/ja/function.posix-getpwnam.php) のテストから [posix_getlogin()](https://www.php.net/manual/ja/function.posix-getlogin.php) の false チェックを除去
- 流れるように posix_getpwnam() の方へ false 渡すのどういうこと、という話のもよう

## weltling: Fix phar:// include handling with file cache
- https://github.com/php/php-src/commit/f31d7ca85e400b85c06adb8db24c573dc1d98dbb
- [7.2~]
- ext/opcache で、Windows でファイルキャッシュ有効時の  phar:// の include の扱いを修正

## weltling: Ensure double slashes are replaced by the path normalization
- https://github.com/php/php-src/commit/ce72bc6b658c335dd37393d0beb28584e6805e97
- Windows 版で、ファイルパスのスラッシュ / バックスラッシュの正規化処理の修正

## nikic: Support VirtualProtect for opcache.protect_memory
- https://github.com/php/php-src/commit/eb8c07fe2f081a5e270f19c329180469d66142bb
- [7.4~]
- ext/opcache で、Windows では [opcache.protect_memory](https://www.php.net/manual/ja/opcache.configuration.php#ini.opcache.protect-memory) 用に VirtualProtect() を使うよう修正