summaryrefslogtreecommitdiff
path: root/Zend/zend_object_handlers.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_object_handlers.c')
-rw-r--r--Zend/zend_object_handlers.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index 1f9d5f24d0..48f1bc641a 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -86,7 +86,9 @@ ZEND_API void rebuild_object_properties(zend_object *zobj) /* {{{ */
prop_info->offset >= 0 &&
Z_TYPE(zobj->properties_table[prop_info->offset]) != IS_UNDEF) {
zval *zv = zend_hash_add(zobj->properties, prop_info->name, &zobj->properties_table[prop_info->offset]);
- ZVAL_INDIRECT(&zobj->properties_table[prop_info->offset], zv);
+ if (EXPECTED(zv)) {
+ ZVAL_INDIRECT(&zobj->properties_table[prop_info->offset], zv);
+ }
}
}
while (ce->parent && ce->parent->default_properties_count) {
@@ -100,7 +102,7 @@ ZEND_API void rebuild_object_properties(zend_object *zobj) /* {{{ */
prop_info->offset >= 0 &&
Z_TYPE(zobj->properties_table[prop_info->offset]) != IS_UNDEF) {
zval *zv = zend_hash_add(zobj->properties, prop_info->name, &zobj->properties_table[prop_info->offset]);
- if (zv) {
+ if (EXPECTED(zv != NULL)) {
ZVAL_INDIRECT(&zobj->properties_table[prop_info->offset], zv);
}
}
@@ -567,7 +569,7 @@ found:
/* To check: can't *variable_ptr be some system variable like error_zval here? */
ZVAL_COPY_VALUE(Z_REFVAL_P(variable_ptr), value);
- if (Z_REFCOUNT_P(value) > 0) {
+ if (Z_REFCOUNTED_P(value) && Z_REFCOUNT_P(value) > 0) {
zval_copy_ctor(Z_REFVAL_P(variable_ptr));
}
zval_dtor(&garbage);