summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorAndrei Zmievski <andrei@php.net>2005-04-15 17:15:18 +0000
committerAndrei Zmievski <andrei@php.net>2005-04-15 17:15:18 +0000
commit4fbddd03d7999353daf6ad66cd612e73c950bdfe (patch)
tree8c293f8ec9ceee58dd0a937b45136ec5cd4832d8 /Zend/zend_execute.c
parent91b587f884a62a831b1468e4a6f609bd576b23aa (diff)
downloadphp-git-4fbddd03d7999353daf6ad66cd612e73c950bdfe.tar.gz
Fix certain operations to stop relying on presence of read_property and
write_property handlers. They may be NULL'ed out by certain objects pretending to be pure arrays, for example. Do checks first.
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 624c341f1c..61cc2c459c 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -617,7 +617,7 @@ static inline void zend_assign_to_object(znode *result, zval **object_ptr, znode
make_real_object(object_ptr TSRMLS_CC); /* this should modify object only if it's empty */
object = *object_ptr;
- if (object->type != IS_OBJECT) {
+ if (object->type != IS_OBJECT || (opcode == ZEND_ASSIGN_OBJ && !Z_OBJ_HT_P(object)->write_property)) {
zend_error(E_WARNING, "Attempt to assign property of non-object");
FREE_OP(free_op2);
if (!RETURN_VALUE_UNUSED(result)) {