/* }}} */
static void spl_ptr_heap_pqueue_elem_dtor(zval *zv) { /* {{{ */
- spl_pqueue_elem *elem = Z_PTR_P(zv);
- zval_ptr_dtor(&elem->data);
- zval_ptr_dtor(&elem->priority);
- efree(elem);
+ if (!Z_ISUNDEF_P(zv)) {
+ spl_pqueue_elem *elem = Z_PTR_P(zv);
+ zval_ptr_dtor(&elem->data);
+ zval_ptr_dtor(&elem->priority);
+ efree(elem);
+ }
}
/* }}} */
}
spl_pqueue_extract_helper(return_value, &value, intern->flags);
+ spl_ptr_heap_pqueue_elem_dtor(&value);
}
/* }}} */
}
spl_ptr_heap_delete_top(object->heap, &elem, &iter->data);
-
- zval_ptr_dtor(&elem);
+ object->heap->dtor(&elem);
zend_user_it_invalidate_current(iter);
}
{
spl_heap_object *intern = Z_SPLHEAP_P(ZEND_THIS);
zval elem;
- spl_ptr_heap_delete_top(intern->heap, &elem, ZEND_THIS);
if (zend_parse_parameters_none() == FAILURE) {
return;
}
- zval_ptr_dtor(&elem);
+ spl_ptr_heap_delete_top(intern->heap, &elem, ZEND_THIS);
+ intern->heap->dtor(&elem);
}
/* }}} */