diff options
| author | Andi Gutmans <andi@php.net> | 2002-02-04 20:44:24 +0000 |
|---|---|---|
| committer | Andi Gutmans <andi@php.net> | 2002-02-04 20:44:24 +0000 |
| commit | 8535164f21b6dc551a519b0e5f11cbd6bd72a2b0 (patch) | |
| tree | a84e995e49279fa400ce1f0605a1b7fc3626abaf /Zend/zend_execute.c | |
| parent | e366f5dbd8a6a56966e07443f0b59eb7d818f037 (diff) | |
| download | php-git-8535164f21b6dc551a519b0e5f11cbd6bd72a2b0.tar.gz | |
- This small patch should also take care of allowing unseting of $this->foo
- and static members. The unset() opcode was luckily already suitable for
- object overloading.
Diffstat (limited to 'Zend/zend_execute.c')
| -rw-r--r-- | Zend/zend_execute.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 5fc60237db..4873d95397 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -2500,6 +2500,10 @@ send_by_ref: zval tmp, *variable = get_zval_ptr(&EX(opline)->op1, EX(Ts), &EG(free_op1), BP_VAR_R); zval **object; zend_bool unset_object; + HashTable *target_symbol_table; + + target_symbol_table = zend_get_target_symbol_table(EX(opline), EX(Ts), BP_VAR_IS TSRMLS_CC); + /* Need to handle target_symbol_table == NULL */ if (variable->type != IS_STRING) { tmp = *variable; @@ -2511,7 +2515,7 @@ send_by_ref: unset_object = (EX(opline)->extended_value == ZEND_UNSET_OBJ); if (unset_object) { - if (zend_hash_find(EG(active_symbol_table), variable->value.str.val, variable->value.str.len+1, (void **)&object) == FAILURE) { + if (zend_hash_find(target_symbol_table, variable->value.str.val, variable->value.str.len+1, (void **)&object) == FAILURE) { zend_error(E_ERROR, "Cannot delete non-existing object"); } if (Z_TYPE_PP(object) != IS_OBJECT) { @@ -2520,7 +2524,7 @@ send_by_ref: (*object)->value.obj.handlers->delete_obj((*object)->value.obj.handle); } - zend_hash_del(EG(active_symbol_table), variable->value.str.val, variable->value.str.len+1); + zend_hash_del(target_symbol_table, variable->value.str.val, variable->value.str.len+1); if (variable == &tmp) { zval_dtor(&tmp); @@ -2721,6 +2725,7 @@ send_by_ref: HashTable *target_symbol_table; target_symbol_table = zend_get_target_symbol_table(EX(opline), EX(Ts), BP_VAR_IS TSRMLS_CC); + /* Need to handle target_symbol_table == NULL */ if (variable->type != IS_STRING) { tmp = *variable; |
