mirror of
https://github.com/bdnugget/php-src.git
synced 2026-11-07 09:17:29 +00:00
Merge branch 'master' of github.com:php/php-src
* 'master' of github.com:php/php-src: Fix bug #81090 in JIT as well Fixed bug #81090
This commit is contained in:
2 files changed
+28
No files matched your search
@@ -1396,6 +1396,13 @@ static zend_never_inline void zend_binary_assign_op_typed_ref(zend_reference *re
|
||||
{
|
||||
zval z_copy;
|
||||
|
||||
/* Make sure that in-place concatenation is used if the LHS is a string. */
|
||||
if (opline->extended_value == ZEND_CONCAT && Z_TYPE(ref->val) == IS_STRING) {
|
||||
concat_function(&ref->val, &ref->val, value);
|
||||
ZEND_ASSERT(Z_TYPE(ref->val) == IS_STRING && "Concat should return string");
|
||||
return;
|
||||
}
|
||||
|
||||
zend_binary_op(&z_copy, &ref->val, value OPLINE_CC);
|
||||
if (EXPECTED(zend_verify_ref_assignable_zval(ref, &z_copy, EX_USES_STRICT_TYPES()))) {
|
||||
zval_ptr_dtor(&ref->val);
|
||||
@@ -1409,6 +1416,13 @@ static zend_never_inline void zend_binary_assign_op_typed_prop(zend_property_inf
|
||||
{
|
||||
zval z_copy;
|
||||
|
||||
/* Make sure that in-place concatenation is used if the LHS is a string. */
|
||||
if (opline->extended_value == ZEND_CONCAT && Z_TYPE_P(zptr) == IS_STRING) {
|
||||
concat_function(zptr, zptr, value);
|
||||
ZEND_ASSERT(Z_TYPE_P(zptr) == IS_STRING && "Concat should return string");
|
||||
return;
|
||||
}
|
||||
|
||||
zend_binary_op(&z_copy, zptr, value OPLINE_CC);
|
||||
if (EXPECTED(zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
|
||||
zval_ptr_dtor(zptr);
|
||||
|
||||
@@ -1918,6 +1918,13 @@ static void ZEND_FASTCALL zend_jit_assign_op_to_typed_ref(zend_reference *ref, z
|
||||
{
|
||||
zval z_copy;
|
||||
|
||||
/* Make sure that in-place concatenation is used if the LHS is a string. */
|
||||
if (binary_op == concat_function && Z_TYPE(ref->val) == IS_STRING) {
|
||||
concat_function(&ref->val, &ref->val, val);
|
||||
ZEND_ASSERT(Z_TYPE(ref->val) == IS_STRING && "Concat should return string");
|
||||
return;
|
||||
}
|
||||
|
||||
binary_op(&z_copy, &ref->val, val);
|
||||
if (EXPECTED(zend_verify_ref_assignable_zval(ref, &z_copy, ZEND_CALL_USES_STRICT_TYPES(EG(current_execute_data))))) {
|
||||
zval_ptr_dtor(&ref->val);
|
||||
@@ -2117,6 +2124,13 @@ static void ZEND_FASTCALL zend_jit_assign_op_to_typed_prop(zval *zptr, zend_prop
|
||||
zval z_copy;
|
||||
|
||||
ZVAL_DEREF(zptr);
|
||||
/* Make sure that in-place concatenation is used if the LHS is a string. */
|
||||
if (binary_op == concat_function && Z_TYPE_P(zptr) == IS_STRING) {
|
||||
concat_function(zptr, zptr, value);
|
||||
ZEND_ASSERT(Z_TYPE_P(zptr) == IS_STRING && "Concat should return string");
|
||||
return;
|
||||
}
|
||||
|
||||
binary_op(&z_copy, zptr, value);
|
||||
if (EXPECTED(zend_verify_property_type(prop_info, &z_copy, EX_USES_STRICT_TYPES()))) {
|
||||
zval_ptr_dtor(zptr);
|
||||
|
||||
Reference in new issue
Block a user