Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
- index 7bfa814..4ab2304 100644
- --- a/Zend/zend_vm_def.h
- +++ b/Zend/zend_vm_def.h
- @@ -3418,7 +3418,7 @@ ZEND_VM_HANDLER(63, ZEND_RECV, ANY, ANY)
- ZEND_VM_NEXT_OPCODE();
- }
- -ZEND_VM_HANDLER(64, ZEND_RECV_INIT, ANY, CONST)
- +ZEND_VM_HANDLER(64, ZEND_RECV_INIT, ANY, CONST|TMP)
- {
- USE_OPLINE
- zval *assignment_value;
- @@ -3429,21 +3429,26 @@ ZEND_VM_HANDLER(64, ZEND_RECV_INIT, ANY, CONST)
- SAVE_OPLINE();
- if (param == NULL) {
- ALLOC_ZVAL(assignment_value);
- - *assignment_value = *opline->op2.zv;
- - if (IS_CONSTANT_TYPE(Z_TYPE_P(assignment_value))) {
- - Z_SET_REFCOUNT_P(assignment_value, 1);
- - zval_update_constant(&assignment_value, 0 TSRMLS_CC);
- - } else if (Z_TYPE_P(assignment_value) == IS_ARRAY) {
- - HashTable *ht;
- -
- - ALLOC_HASHTABLE(ht);
- - zend_hash_init(ht, zend_hash_num_elements(Z_ARRVAL_P(assignment_value)), NULL, ZVAL_PTR_DTOR, 0);
- - zend_hash_copy(ht, Z_ARRVAL_P(assignment_value), (copy_ctor_func_t) zval_deep_copy, NULL, sizeof(zval *));
- - Z_ARRVAL_P(assignment_value) = ht;
- + if (OP2_TYPE == IS_CONST) {
- + *assignment_value = *opline->op2.zv;
- + if (IS_CONSTANT_TYPE(Z_TYPE_P(assignment_value))) {
- + Z_SET_REFCOUNT_P(assignment_value, 1);
- + zval_update_constant(&assignment_value, 0 TSRMLS_CC);
- + } else if (Z_TYPE_P(assignment_value) == IS_ARRAY) {
- + HashTable *ht;
- +
- + ALLOC_HASHTABLE(ht);
- + zend_hash_init(ht, zend_hash_num_elements(Z_ARRVAL_P(assignment_value)), NULL, ZVAL_PTR_DTOR, 0);
- + zend_hash_copy(ht, Z_ARRVAL_P(assignment_value), (copy_ctor_func_t) zval_deep_copy, NULL, sizeof(zval *));
- + Z_ARRVAL_P(assignment_value) = ht;
- + } else {
- + zval_copy_ctor(assignment_value);
- + }
- + INIT_PZVAL(assignment_value);
- } else {
- - zval_copy_ctor(assignment_value);
- + *assignment_value = EX_T(opline->op2.var).tmp_var;
- + INIT_PZVAL(assignment_value);
- }
- - INIT_PZVAL(assignment_value);
- } else {
- assignment_value = *param;
- Z_ADDREF_P(assignment_value);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement