mirror of
https://github.com/php/php-src.git
synced 2025-01-22 19:54:13 +08:00
Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6: Fixed bug #71841 (EG(error_zval) is not handled well) Fixed bug #71840 (Unserialize accepts wrongly data) Conflicts: Zend/zend_vm_def.h Zend/zend_vm_execute.h ext/standard/var_unserializer.c
This commit is contained in:
commit
fe1a3fc08b
23
Zend/tests/bug71841.phpt
Normal file
23
Zend/tests/bug71841.phpt
Normal file
@ -0,0 +1,23 @@
|
||||
--TEST--
|
||||
Bug #71841 (EG(error_zval) is not handled well)
|
||||
--INI--
|
||||
error_reporting=0
|
||||
--FILE--
|
||||
<?php
|
||||
$z = unserialize('O:1:"A":0:{}');
|
||||
var_dump($z->e.=0);
|
||||
var_dump(++$z->x);
|
||||
var_dump($z->y++);
|
||||
|
||||
$y = array(PHP_INT_MAX => 0);
|
||||
var_dump($y[] .= 0);
|
||||
var_dump(++$y[]);
|
||||
var_dump($y[]++);
|
||||
?>
|
||||
--EXPECT--
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
@ -744,13 +744,18 @@ ZEND_VM_HELPER_EX(zend_binary_assign_op_obj_helper, VAR|UNUSED|CV, CONST|TMPVAR|
|
||||
/* here we are sure we are dealing with an object */
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
zend_assign_op_overloaded_property(object, property, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -1150,28 +1155,32 @@ ZEND_VM_HELPER_EX(zend_pre_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR|C
|
||||
}
|
||||
|
||||
/* here we are sure we are dealing with an object */
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
} else {
|
||||
zend_pre_incdec_overloaded_property(object, property, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -1232,22 +1241,25 @@ ZEND_VM_HELPER_EX(zend_post_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR|
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((OP2_TYPE == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -16524,13 +16524,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
||||
/* here we are sure we are dealing with an object */
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -16928,28 +16933,32 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
||||
}
|
||||
|
||||
/* here we are sure we are dealing with an object */
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
} else {
|
||||
zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -17009,22 +17018,25 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -19728,13 +19740,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
||||
/* here we are sure we are dealing with an object */
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -20132,28 +20149,32 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
||||
}
|
||||
|
||||
/* here we are sure we are dealing with an object */
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
} else {
|
||||
zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -20213,22 +20234,25 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -21387,13 +21411,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
||||
/* here we are sure we are dealing with an object */
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -21793,28 +21822,32 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
||||
}
|
||||
|
||||
/* here we are sure we are dealing with an object */
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
} else {
|
||||
zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -21875,22 +21908,25 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -22934,13 +22970,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
||||
/* here we are sure we are dealing with an object */
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -23302,28 +23343,32 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
||||
}
|
||||
|
||||
/* here we are sure we are dealing with an object */
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
} else {
|
||||
zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -23383,22 +23428,25 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -25349,13 +25397,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
||||
/* here we are sure we are dealing with an object */
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -25717,28 +25770,32 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
||||
}
|
||||
|
||||
/* here we are sure we are dealing with an object */
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
} else {
|
||||
zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -25798,22 +25855,25 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -26836,13 +26896,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
||||
/* here we are sure we are dealing with an object */
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -27205,28 +27270,32 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
||||
}
|
||||
|
||||
/* here we are sure we are dealing with an object */
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
} else {
|
||||
zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -27287,22 +27356,25 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -30529,13 +30601,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
||||
/* here we are sure we are dealing with an object */
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -30933,28 +31010,32 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
||||
}
|
||||
|
||||
/* here we are sure we are dealing with an object */
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
} else {
|
||||
zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -31014,22 +31095,25 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -35784,13 +35868,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
||||
/* here we are sure we are dealing with an object */
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -36188,28 +36277,32 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
||||
}
|
||||
|
||||
/* here we are sure we are dealing with an object */
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
} else {
|
||||
zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -36269,22 +36362,25 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -38444,13 +38540,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
|
||||
/* here we are sure we are dealing with an object */
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
binary_op(zptr, zptr, value);
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -38850,28 +38951,32 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
|
||||
}
|
||||
|
||||
/* here we are sure we are dealing with an object */
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
}
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
SEPARATE_ZVAL_NOREF(zptr);
|
||||
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
}
|
||||
if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
|
||||
ZVAL_COPY(EX_VAR(opline->result.var), zptr);
|
||||
}
|
||||
} else {
|
||||
zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
|
||||
@ -38932,22 +39037,25 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SP
|
||||
|
||||
if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
|
||||
&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
|
||||
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
if (UNEXPECTED(zptr == &EG(error_zval))) {
|
||||
ZVAL_NULL(EX_VAR(opline->result.var));
|
||||
} else {
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
if (inc) {
|
||||
fast_long_increment_function(zptr);
|
||||
} else {
|
||||
fast_long_decrement_function(zptr);
|
||||
}
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
ZVAL_DEREF(zptr);
|
||||
ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
|
||||
zval_opt_copy_ctor(zptr);
|
||||
if (inc) {
|
||||
increment_function(zptr);
|
||||
} else {
|
||||
decrement_function(zptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
9
ext/standard/tests/serialize/bug71840.phpt
Normal file
9
ext/standard/tests/serialize/bug71840.phpt
Normal file
@ -0,0 +1,9 @@
|
||||
--TEST--
|
||||
Bug #71840 (Unserialize accepts wrongly data)
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(unserialize('a:1:{s:0:""0a:0:{}}'));
|
||||
?>
|
||||
--EXPECTF--
|
||||
Notice: unserialize(): Error at offset 11 of 19 bytes in %sbug71840.php on line %d
|
||||
bool(false)
|
@ -574,7 +574,7 @@ yy2:
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if (yych == ':') goto yy95;
|
||||
yy3:
|
||||
#line 873 "ext/standard/var_unserializer.re"
|
||||
#line 884 "ext/standard/var_unserializer.re"
|
||||
{ return 0; }
|
||||
#line 580 "ext/standard/var_unserializer.c"
|
||||
yy4:
|
||||
@ -619,7 +619,7 @@ yy13:
|
||||
goto yy3;
|
||||
yy14:
|
||||
++YYCURSOR;
|
||||
#line 867 "ext/standard/var_unserializer.re"
|
||||
#line 878 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
/* this is the case where we have less data than planned */
|
||||
php_error_docref(NULL, E_NOTICE, "Unexpected end of serialized data");
|
||||
@ -655,7 +655,7 @@ yy20:
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != '"') goto yy18;
|
||||
++YYCURSOR;
|
||||
#line 722 "ext/standard/var_unserializer.re"
|
||||
#line 733 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
size_t len, len2, len3, maxlen;
|
||||
zend_long elements;
|
||||
@ -825,7 +825,7 @@ yy27:
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != '"') goto yy18;
|
||||
++YYCURSOR;
|
||||
#line 715 "ext/standard/var_unserializer.re"
|
||||
#line 726 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
if (!var_hash) return 0;
|
||||
|
||||
@ -853,7 +853,7 @@ yy34:
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != '{') goto yy18;
|
||||
++YYCURSOR;
|
||||
#line 691 "ext/standard/var_unserializer.re"
|
||||
#line 702 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
zend_long elements = parse_iv(start + 2);
|
||||
/* use iv() not uiv() in order to check data range */
|
||||
@ -898,7 +898,7 @@ yy41:
|
||||
yych = *++YYCURSOR;
|
||||
if (yych != '"') goto yy18;
|
||||
++YYCURSOR;
|
||||
#line 663 "ext/standard/var_unserializer.re"
|
||||
#line 668 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
size_t len, maxlen;
|
||||
zend_string *str;
|
||||
@ -920,13 +920,19 @@ yy41:
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (*(YYCURSOR + 1) != ';') {
|
||||
efree(str);
|
||||
*p = YYCURSOR + 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
YYCURSOR += 2;
|
||||
*p = YYCURSOR;
|
||||
|
||||
ZVAL_STR(rval, str);
|
||||
return 1;
|
||||
}
|
||||
#line 930 "ext/standard/var_unserializer.c"
|
||||
#line 936 "ext/standard/var_unserializer.c"
|
||||
yy46:
|
||||
yych = *++YYCURSOR;
|
||||
if (yych == '+') goto yy47;
|
||||
@ -968,13 +974,18 @@ yy48:
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (*(YYCURSOR + 1) != ';') {
|
||||
*p = YYCURSOR + 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
YYCURSOR += 2;
|
||||
*p = YYCURSOR;
|
||||
|
||||
ZVAL_STRINGL(rval, str, len);
|
||||
return 1;
|
||||
}
|
||||
#line 978 "ext/standard/var_unserializer.c"
|
||||
#line 989 "ext/standard/var_unserializer.c"
|
||||
yy53:
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') {
|
||||
@ -1071,7 +1082,7 @@ use_double:
|
||||
ZVAL_DOUBLE(rval, zend_strtod((const char *)start + 2, NULL));
|
||||
return 1;
|
||||
}
|
||||
#line 1075 "ext/standard/var_unserializer.c"
|
||||
#line 1086 "ext/standard/var_unserializer.c"
|
||||
yy65:
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= ',') {
|
||||
@ -1146,7 +1157,7 @@ yy73:
|
||||
|
||||
return 1;
|
||||
}
|
||||
#line 1150 "ext/standard/var_unserializer.c"
|
||||
#line 1161 "ext/standard/var_unserializer.c"
|
||||
yy76:
|
||||
yych = *++YYCURSOR;
|
||||
if (yych == 'N') goto yy73;
|
||||
@ -1199,7 +1210,7 @@ yy79:
|
||||
ZVAL_LONG(rval, parse_iv(start + 2));
|
||||
return 1;
|
||||
}
|
||||
#line 1203 "ext/standard/var_unserializer.c"
|
||||
#line 1214 "ext/standard/var_unserializer.c"
|
||||
yy83:
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= '/') goto yy18;
|
||||
@ -1213,7 +1224,7 @@ yy83:
|
||||
ZVAL_BOOL(rval, parse_iv(start + 2));
|
||||
return 1;
|
||||
}
|
||||
#line 1217 "ext/standard/var_unserializer.c"
|
||||
#line 1228 "ext/standard/var_unserializer.c"
|
||||
yy87:
|
||||
++YYCURSOR;
|
||||
#line 573 "ext/standard/var_unserializer.re"
|
||||
@ -1222,7 +1233,7 @@ yy87:
|
||||
ZVAL_NULL(rval);
|
||||
return 1;
|
||||
}
|
||||
#line 1226 "ext/standard/var_unserializer.c"
|
||||
#line 1237 "ext/standard/var_unserializer.c"
|
||||
yy89:
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= ',') {
|
||||
@ -1270,7 +1281,7 @@ yy91:
|
||||
|
||||
return 1;
|
||||
}
|
||||
#line 1274 "ext/standard/var_unserializer.c"
|
||||
#line 1285 "ext/standard/var_unserializer.c"
|
||||
yy95:
|
||||
yych = *++YYCURSOR;
|
||||
if (yych <= ',') {
|
||||
@ -1319,9 +1330,9 @@ yy97:
|
||||
|
||||
return 1;
|
||||
}
|
||||
#line 1323 "ext/standard/var_unserializer.c"
|
||||
#line 1334 "ext/standard/var_unserializer.c"
|
||||
}
|
||||
#line 875 "ext/standard/var_unserializer.re"
|
||||
#line 886 "ext/standard/var_unserializer.re"
|
||||
|
||||
|
||||
return 0;
|
||||
|
@ -653,6 +653,11 @@ use_double:
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (*(YYCURSOR + 1) != ';') {
|
||||
*p = YYCURSOR + 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
YYCURSOR += 2;
|
||||
*p = YYCURSOR;
|
||||
|
||||
@ -681,6 +686,12 @@ use_double:
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (*(YYCURSOR + 1) != ';') {
|
||||
efree(str);
|
||||
*p = YYCURSOR + 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
YYCURSOR += 2;
|
||||
*p = YYCURSOR;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user