php-master-changes 2019-01-02

今日は array_multisort() のバグ修正、未定義関数参照時のエラー出力の修正、opcache の最適化で消えたらあかんコードが消える問題の修正、$GLOBALS の print_r() の修正、zend_compile_class_ref_ex() の ex 外し、誤った ZEND_NORMALIZE_BOOL() の使い方の修正、mysqlnd のプラグイン用の構造体宣言への PHPAPI の追加、ZEND_PARSE_PARAMETERS_NONE() を使ってなかった箇所を使うよう修正、ext/skelton を 7.2 コードから使う用に ZEND_PARSE_PARAMETERS_NONE() の polyfill 追加、配列リテラルのカンマが変に多い際の出力での行番号出力修正、FreeBSD での ifunc 無効化、opcache の 32bit 版でのアライメント対策の修正があった！年明けから多い！

# 2019-01-02
## laruence: Fixed bug [#77395](https://bugs.php.net/bug.php?id=77395) (segfault about array_multisort)
- https://github.com/php/php-src/commit/8ebae84674c75c3483550fb6e9da49122d952c99
- [7.2~]
- [array_multisort()](http://php.net/manual/ja/function.array-multisort.php) 利用時に SEGV が出る場合がある問題の修正

## laruence: Update NEWS
- https://github.com/php/php-src/commit/703ccd5d2738d79e5df1a7f30cff7efd18c9d1bd
- [7.3~]
- ↑の修正の（7.3 用の箇所への）NEWS への追記

## laruence: Fixed bug [#77376](https://bugs.php.net/bug.php?id=77376) ("undefined function" message no longer includes namespace)
- https://github.com/php/php-src/commit/e01f08f679105b5fc80a6e65774731821227b66f
- [7.3~]
- 未定義関数参照時のエラー出力が名前空間を含まなくなっていた問題の修正
- [3v4l のバグハント機能](https://3v4l.org/bughunt/7.3.0/7.2.13+7.2.12)から拾って起票したみたい

## nikic: Fixed bug [#77257](https://bugs.php.net/bug.php?id=77257)
- https://github.com/php/php-src/commit/91888cc372200543d6d40ebb0120d7c8ef7575e3
- [7.3~]
- ext/opcache で、最適化によって switch-case 内の代入が消えてしまう場合がある問題の修正
- SSA の最適化のあたりなのは分かるけどあまり詳しく追ってない
- 結構ツラいバグな気がする

## laruence: Fixed bug [#77387](https://bugs.php.net/bug.php?id=77387) (Recursion detection broken when printing GLOBALS)
- https://github.com/php/php-src/commit/54a58a73805991d3cec927a112965368211b03a5
- [7.3~]
- `$GLOBALS` の再帰検知が 7.3 以降でうまく動作しなくなっており、[print_r()](http://php.net/manual/ja/function.print-r.php) できなくなっていた問題の修正
- これも [3v4l のバグハント機能](https://3v4l.org/bughunt/7.3.0/7.2.13+7.2.12)から拾って起票したみたい、benri だな

## laruence: Entry get lost while merging
- https://github.com/php/php-src/commit/1b86f84908b4fd495e7da11e84e4575d703408a6
- [7.3~]
- マージで消しちゃった NEWS エントリを復帰

## nikic: Drop \_ex from zend_compile_class_ref_ex
- https://github.com/php/php-src/commit/636b1c3d26ba388a06f6bae80e9639958ca050d6
- zend_compile_class_ref_ex() の _ex を削除
- \_ex じゃない版がすでになくなってて唯一無二の zend_compile_class_ref() になってたので

## nikic: Fix ZEND_NORMALIZE_BOOL usage
- https://github.com/php/php-src/commit/7ac3c2fa655d1961937f86a8d3ef2c5e96cf4f76
- [だいぶ前のコード整理](https://qiita.com/sj-i/items/e6885d9803524b37c0da#carusogabriel-clean-up-unnecessary-ternary-expressions-and-simplify-some-returns) で入った誤った ZEND_NORMALIZE_BOOL() の使い方の修正

## weltling: Fixed bug [#75684](https://bugs.php.net/bug.php?id=75684) In mysqlnd_ext_plugin.h the plugin methods family has no external visibility
- https://github.com/php/php-src/commit/7b3f8e746af83b044ff86c0d864801929b1dd1d9
- [7.2~]
- ext/mysqlnd で、プラグイン用の構造体に PHPAPI （Windows 版では `__declspec(dllexport)` や `__declspec(dllimport)` に展開）がなく見えなかった問題の修正

## weltling: Update NEWS
- https://github.com/php/php-src/commit/1732ce9c2357ac5f25f2cc997efb75f673728001
- [7.3~]
- ↑の NEWS への追記

## nikic: Use ZEND_PARSE_PARAMETERS_NONE in pcre
- https://github.com/php/php-src/commit/2fab3302aed1323a20c592fce1423d0138b7de09
- ext/pcre で、[preg_last_error()](http://php.net/manual/ja/function.preg-last-error.php) の実装に `ZEND_PARSE_PARAMETERS_START(0, 0)` でなく `ZEND_PARSE_PARAMETERS_NONE()` を使うよう修正

## vjardinMisc: skeleton: support PHP 7.2
- https://github.com/php/php-src/commit/91e44a27f68aa808e03d11b108ae8c8ea3e4c2f9
- [7.3~]
- ext/skelton で、7.2 のコードベースから使われた時用に ZEND_PARSE_PARAMETERS_NONE() の polyfill を用意

## Andrey Hristov: Test commit
- https://github.com/php/php-src/commit/d64b74869cd24949bd9b6d231ff08556a47224ed
- ext/mysqlnd で、改行 1 つ足す謎コミット

## nikic: Partial fix for bug [#75426](https://bugs.php.net/bug.php?id=75426)
- https://github.com/php/php-src/commit/73596c56e7905ce5b7c4f15d551361ee744cad0c
- [7.2~]
- 配列リテラルのカンマが変に多い際、エラーメッセージが配列定義先頭の行番号だったのを、正常に定義が書かれていた最終行の行番号を出すよう修正

## nikic: Disable ifuncs on FreeBSD
- https://github.com/php/php-src/commit/291589114aa9be899cf7d5d874c3b5bbdb35f336
- [7.3~]
- FreeBSD で base64 などが正常動作しない問題 [#77284](https://bugs.php.net/bug.php?id=77284) があり、[ifunc](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html) 経由で SIMD 版使う部分が怪しいのでは、というので、FreeBSD ビルドでは一旦 ifunc を使わないようビルドシステムを修正

## nikic: Possible fix for bug [#77287](https://bugs.php.net/bug.php?id=77287)
- https://github.com/php/php-src/commit/325a1139744413420a62d3006c04914587628810
- [7.3~]
- ext/opcache で、32 bit 版ではアライメントの関係でバグるかも、という箇所を修正
- 報告のバグ自体は 64 bit でも起きるということで、違う問題かもという状態

## nikic: Fix undefined function error message
- https://github.com/php/php-src/commit/fe359cf1ff701cdcb66b32882e2352256c4435db
- 未定義関数呼び出しのエラーメッセージを修正
- master でのテストこけ対策