sj-i / notes.bugs.php.net

0 stars 0 forks source link

Bug #51758 zend_object_handlers.h prescribes incorrect behavior of write property handler #31

Closed sj-i closed 3 years ago

sj-i commented 3 years ago
sj-i commented 3 years ago

blame を見ると 2004 年 2 月のコミットで追加 https://github.com/php/php-src/commit/7d3215d33321173c58db4d86b7398e16c5c55d13

sj-i commented 3 years ago

ChangeLog の https://github.com/php/php-src/commit/c8c0e979826b677de5f786920289056242ea5c54 で入ってたのと同じメッセージでもある

sj-i commented 3 years ago

https://externals.io/message/7789 でドキュメントへ入れようぜなんて言及もあるが

sj-i commented 3 years ago

この箇所自体は https://github.com/php/php-src/commit/f7f790fcc9d57bcd0b6d356994c67ec746a5ac23 で修正されてもいる 食べ残しはこっちで消えてる https://github.com/php/php-src/commit/4a475a4976db92e71949786cdf5990c61514261e PHP7 以降ではスカラ型の値はデフォルトで refcount されない https://nikic.github.io/2015/05/05/Internal-value-representation-in-PHP-7-part-1.html

sj-i commented 3 years ago

https://github.com/php/php-src/blob/c8c0e979826b677de5f786920289056242ea5c54/Zend/zend_execute.c#L407 当時は ZEND_ASSIGN_OBJ の処理時に書き込みハンドラを呼ぶ前に refcount を ++ してた

sj-i commented 3 years ago

https://github.com/php/php-src/blob/c8c0e979826b677de5f786920289056242ea5c54/Zend/zend_API.c#L1058-L1170 zend_API からの呼び出しで refcount が 0 や 1 で呼ばれるケースがあった

sj-i commented 3 years ago

https://github.com/php/php-src/pull/6597 もういらないだろう、でとりあえず消す PR を送ってみた

sj-i commented 3 years ago

マージされたのでクローズ