summaryrefslogtreecommitdiff
path: root/Zend/zend_execute.c
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>2000-06-09 13:07:26 +0000
committerAndi Gutmans <andi@php.net>2000-06-09 13:07:26 +0000
commita712da5cee5e512d13388cb74e53373d678b61e5 (patch)
tree0a209e1932441c85ed326a92aaa9f0e6096a0142 /Zend/zend_execute.c
parente346a6b53843e9823e0164c798634fb7f108f6b4 (diff)
downloadphp-git-a712da5cee5e512d13388cb74e53373d678b61e5.tar.gz
- Make unset consistent with the way array offsets work
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r--Zend/zend_execute.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 77b1ac6fd3..ebec3c0e99 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -2159,16 +2159,31 @@ send_by_ref:
ht = NULL;
break;
}
- if (ht) {
+ if (ht) {
switch (offset->type) {
+ case IS_DOUBLE:
+ case IS_RESOURCE:
+ case IS_BOOL:
case IS_LONG:
- zend_hash_index_del(ht, offset->value.lval);
+ {
+ long index;
+
+ if (offset->type == IS_DOUBLE) {
+ index = (long) offset->value.lval;
+ } else {
+ index = offset->value.lval;
+ }
+ zend_hash_index_del(ht, index);
+ break;
+ }
+ case IS_STRING:
+ zend_hash_del(ht, offset->value.str.val, offset->value.str.len+1);
break;
case IS_NULL:
- zend_hash_del(ht,"",1);
+ zend_hash_del(ht, "", sizeof(""));
break;
- case IS_STRING:
- zend_hash_del(ht, offset->value.str.val, offset->value.str.len+1);
+ default:
+ zend_error(E_WARNING, "Illegal offset type in unset");
break;
}
}