Skip to content

Commit 9788344

Browse files
committed
Remove bogus check in ASSIGN_OBJ_REF
1 parent 882aaba commit 9788344

File tree

2 files changed

+271
-309
lines changed

2 files changed

+271
-309
lines changed

Zend/zend_vm_def.h

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2756,26 +2756,24 @@ ZEND_VM_HANDLER(200, ZEND_ASSIGN_OBJ_REF, VAR|UNUSED|THIS|CV, CONST|TMPVAR|CV, C
27562756
} else {
27572757
zend_property_info *prop_info = NULL;
27582758

2759-
if ((OP2_TYPE == IS_CONST) ? EXPECTED(!IS_UNKNOWN_DYNAMIC_PROPERTY_OFFSET((uintptr_t) CACHED_PTR_EX(cache_addr + 1))) : EXPECTED(Z_TYPE_P(property) == IS_STRING)) {
2760-
if (OP2_TYPE == IS_CONST) {
2761-
prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
2762-
} else {
2763-
zend_string *tmp_str, *prop_name = zval_get_tmp_string(property, &tmp_str);
2764-
prop_info = zend_object_fetch_property_type_info(Z_OBJCE_P(container), prop_name, NULL);
2765-
zend_tmp_string_release(tmp_str);
2766-
}
2759+
if (OP2_TYPE == IS_CONST) {
2760+
prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2);
2761+
} else {
2762+
zend_string *tmp_str, *prop_name = zval_get_tmp_string(property, &tmp_str);
2763+
prop_info = zend_object_fetch_property_type_info(Z_OBJCE_P(container), prop_name, NULL);
2764+
zend_tmp_string_release(tmp_str);
2765+
}
27672766

2768-
if (UNEXPECTED(prop_info)) {
2769-
if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
2770-
FREE_OP1_VAR_PTR();
2771-
FREE_OP2();
2772-
FREE_OP_DATA_VAR_PTR();
2773-
HANDLE_EXCEPTION();
2774-
}
2767+
if (UNEXPECTED(prop_info)) {
2768+
if (!zend_verify_prop_assignable_by_ref(prop_info, value_ptr, EX_USES_STRICT_TYPES())) {
2769+
FREE_OP1_VAR_PTR();
2770+
FREE_OP2();
2771+
FREE_OP_DATA_VAR_PTR();
2772+
HANDLE_EXCEPTION();
2773+
}
27752774

2776-
if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
2777-
ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
2778-
}
2775+
if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr)) && Z_ISREF_P(variable_ptr)) {
2776+
ZEND_REF_DEL_TYPE_SOURCE(Z_REF_P(variable_ptr), prop_info);
27792777
}
27802778
}
27812779
zend_assign_to_variable_reference(variable_ptr, value_ptr);

0 commit comments

Comments
 (0)