mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
zend_vm_gen: Fix GET_OP*_OBJ_ZVAL_PTR_DEREF for ANY (#18746)
Fixes php/php-src#18745
This commit is contained in:
@@ -126,6 +126,7 @@ typedef int (ZEND_FASTCALL *incdec_t)(zval *);
|
||||
#define get_zval_ptr_ptr(op_type, node, type) _get_zval_ptr_ptr(op_type, node, type EXECUTE_DATA_CC)
|
||||
#define get_zval_ptr_ptr_undef(op_type, node, type) _get_zval_ptr_ptr(op_type, node, type EXECUTE_DATA_CC)
|
||||
#define get_obj_zval_ptr(op_type, node, type) _get_obj_zval_ptr(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
|
||||
#define get_obj_zval_ptr_deref(op_type, node, type) _get_obj_zval_ptr_deref(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
|
||||
#define get_obj_zval_ptr_undef(op_type, node, type) _get_obj_zval_ptr_undef(op_type, node, type EXECUTE_DATA_CC OPLINE_CC)
|
||||
#define get_obj_zval_ptr_ptr(op_type, node, type) _get_obj_zval_ptr_ptr(op_type, node, type EXECUTE_DATA_CC)
|
||||
|
||||
@@ -537,6 +538,14 @@ static inline ZEND_ATTRIBUTE_UNUSED zval *_get_obj_zval_ptr(int op_type, znode_o
|
||||
return get_zval_ptr(op_type, op, type);
|
||||
}
|
||||
|
||||
static inline ZEND_ATTRIBUTE_UNUSED zval *_get_obj_zval_ptr_deref(int op_type, znode_op op, int type EXECUTE_DATA_DC OPLINE_DC)
|
||||
{
|
||||
if (op_type == IS_UNUSED) {
|
||||
return &EX(This);
|
||||
}
|
||||
return get_zval_ptr_deref(op_type, op, type);
|
||||
}
|
||||
|
||||
static inline ZEND_ATTRIBUTE_UNUSED zval *_get_obj_zval_ptr_undef(int op_type, znode_op op, int type EXECUTE_DATA_DC OPLINE_DC)
|
||||
{
|
||||
if (op_type == IS_UNUSED) {
|
||||
|
||||
@@ -363,7 +363,7 @@ $op2_get_obj_zval_ptr_undef = array(
|
||||
);
|
||||
|
||||
$op1_get_obj_zval_ptr_deref = array(
|
||||
"ANY" => "get_obj_zval_ptr(opline->op1_type, opline->op1, \\1)",
|
||||
"ANY" => "get_obj_zval_ptr_deref(opline->op1_type, opline->op1, \\1)",
|
||||
"TMP" => "_get_zval_ptr_tmp(opline->op1.var EXECUTE_DATA_CC)",
|
||||
"VAR" => "_get_zval_ptr_var_deref(opline->op1.var EXECUTE_DATA_CC)",
|
||||
"CONST" => "RT_CONSTANT(opline, opline->op1)",
|
||||
@@ -374,7 +374,7 @@ $op1_get_obj_zval_ptr_deref = array(
|
||||
);
|
||||
|
||||
$op2_get_obj_zval_ptr_deref = array(
|
||||
"ANY" => "get_obj_zval_ptr(opline->op2_type, opline->op2, \\1)",
|
||||
"ANY" => "get_obj_zval_ptr_deref(opline->op2_type, opline->op2, \\1)",
|
||||
"TMP" => "_get_zval_ptr_tmp(opline->op2.var EXECUTE_DATA_CC)",
|
||||
"VAR" => "_get_zval_ptr_var_deref(opline->op2.var EXECUTE_DATA_CC)",
|
||||
"CONST" => "RT_CONSTANT(opline, opline->op2)",
|
||||
|
||||
Reference in New Issue
Block a user