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;
}
}