mirror of
https://github.com/php/php-src.git
synced 2025-08-19 08:49:28 +02:00
Merge branch 'PHP-7.2'
* PHP-7.2: Fixed bug #75608 ("Narrowing occurred during type inference" error)
This commit is contained in:
commit
c789dfee04
2 changed files with 35 additions and 2 deletions
|
@ -2948,7 +2948,7 @@ static int zend_update_type_info(const zend_op_array *op_array,
|
||||||
break;
|
break;
|
||||||
case ZEND_FE_FETCH_R:
|
case ZEND_FE_FETCH_R:
|
||||||
case ZEND_FE_FETCH_RW:
|
case ZEND_FE_FETCH_RW:
|
||||||
tmp = (t2 & MAY_BE_REF);
|
tmp = t2;
|
||||||
if (t1 & MAY_BE_OBJECT) {
|
if (t1 & MAY_BE_OBJECT) {
|
||||||
if (opline->opcode == ZEND_FE_FETCH_RW) {
|
if (opline->opcode == ZEND_FE_FETCH_RW) {
|
||||||
tmp |= MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
|
tmp |= MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
|
||||||
|
@ -2973,7 +2973,7 @@ static int zend_update_type_info(const zend_op_array *op_array,
|
||||||
}
|
}
|
||||||
UPDATE_SSA_TYPE(tmp, ssa_ops[i].op2_def);
|
UPDATE_SSA_TYPE(tmp, ssa_ops[i].op2_def);
|
||||||
if (ssa_ops[i].result_def >= 0) {
|
if (ssa_ops[i].result_def >= 0) {
|
||||||
tmp = 0;
|
tmp = (ssa_ops[i].result_use >= 0) ? RES_USE_INFO() : 0;
|
||||||
if (t1 & MAY_BE_OBJECT) {
|
if (t1 & MAY_BE_OBJECT) {
|
||||||
tmp |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
|
tmp |= MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF;
|
||||||
}
|
}
|
||||||
|
|
33
ext/opcache/tests/bug75608.phpt
Normal file
33
ext/opcache/tests/bug75608.phpt
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
--TEST--
|
||||||
|
Bug #75608 ("Narrowing occurred during type inference" error)
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
class ReactionRatingService
|
||||||
|
{
|
||||||
|
public function calculateBoostPoints()
|
||||||
|
{
|
||||||
|
while ($reaction = $reactions) {
|
||||||
|
$reactionRatings = $this->validFunction();
|
||||||
|
|
||||||
|
$totalWeight = 0;
|
||||||
|
$runningScore = 0;
|
||||||
|
$queue = [];
|
||||||
|
foreach ($reactionRatings as $ratingData) {
|
||||||
|
if ($runningScore != $reaction['Score']) {
|
||||||
|
if ( ! $ratingData['BoostEarned']) {
|
||||||
|
$queue[] = $ratingData['UserID'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
foreach ($queue as $userId) {
|
||||||
|
$userBoostPointsRecalculate[$userId][] = $reaction['ID'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$totalWeight += $ratingData['Weight'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
OK
|
||||||
|
--EXPECT--
|
||||||
|
OK
|
Loading…
Add table
Add a link
Reference in a new issue