diff options
author | Andi Gutmans <andi@php.net> | 2000-06-09 13:07:26 +0000 |
---|---|---|
committer | Andi Gutmans <andi@php.net> | 2000-06-09 13:07:26 +0000 |
commit | a712da5cee5e512d13388cb74e53373d678b61e5 (patch) | |
tree | 0a209e1932441c85ed326a92aaa9f0e6096a0142 /Zend/zend_execute.c | |
parent | e346a6b53843e9823e0164c798634fb7f108f6b4 (diff) | |
download | php-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.c | 25 |
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; } } |