1
0
mirror of https://github.com/php/php-src.git synced 2026-04-14 19:41:05 +02:00
This commit is contained in:
Nikita Popov
2017-04-14 22:20:32 +02:00
parent 3ffe2cd251
commit 2f22dffd1a
3 changed files with 44 additions and 0 deletions

1
NEWS
View File

@@ -39,6 +39,7 @@ PHP NEWS
- Opcache:
. Fixed bug #74431 (foreach infinite loop). (Nikita)
. Fixed bug #74442 (Opcached version produces a nested array). (Nikita)
- OpenSSL:
. Fixed bug #74341 (openssl_x509_parse fails to parse ASN.1 UTCTime without

View File

@@ -366,6 +366,12 @@ static zend_bool opline_supports_assign_contraction(
&& (opline->op2_type != IS_CV || opline->op2.var != cv_var);
}
if (opline->opcode == ZEND_CAST) {
/* CAST to array/object may initialize the result to an empty array/object before
* reading the expression. */
return opline->extended_value != IS_ARRAY && opline->extended_value != IS_OBJECT;
}
return 1;
}

View File

@@ -0,0 +1,37 @@
--TEST--
Bug #74442: Opcached version produces a nested array
--FILE--
<?php
class Schema_Base {
public function addField($typeclass, array $params = null) {
$field = new $typeclass($params);
return $field;
}
}
class Field_Base {
public function __construct(array $params = null) {
if (! is_array($params)) {
$params = (array) $params;
}
call_user_func_array(array($this, 'acceptParams'), $params);
}
}
class Field_Integer extends Field_Base {
protected function acceptParams($bytes = 4) {
echo print_r($bytes, true);
}
}
try {
$schema = new Schema_Base;
$schema->addField('Field_Integer');
} catch (Throwable $ex) {
echo "CAUGHT EXCEPTION";
echo (string)$ex;
}
?>
--EXPECT--
4