From a712da5cee5e512d13388cb74e53373d678b61e5 Mon Sep 17 00:00:00 2001 From: Andi Gutmans Date: Fri, 9 Jun 2000 13:07:26 +0000 Subject: [PATCH] - Make unset consistent with the way array offsets work --- Zend/zend_execute.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 77b1ac6fd3c..ebec3c0e994 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -2159,17 +2159,32 @@ 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); - break; - case IS_NULL: - zend_hash_del(ht,"",1); - break; + { + 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, "", sizeof("")); + break; + default: + zend_error(E_WARNING, "Illegal offset type in unset"); + break; } } } else {