int php_pq_compare_index(const void *lptr, const void *rptr)
{
- const Bucket *l = *(const Bucket **) lptr;
- const Bucket *r = *(const Bucket **) rptr;
+ zend_ulong l = ((const Bucket *) lptr)->h;
+ zend_ulong r = ((const Bucket *) rptr)->h;
- if (l->h < r->h) {
+ if (l < r) {
return -1;
}
- if (l->h > r->h) {
+ if (l > r) {
return 1;
}
return 0;
}
+void php_pq_hash_ptr_dtor(zval *p)
+{
+ efree(Z_PTR_P(p));
+}
+
zend_class_entry *php_pqdt_class_entry;
ZEND_BEGIN_ARG_INFO_EX(ai_pqdt_to_string, 0, 0, 0)
{
zend_error_handling zeh;
char *fmt_str, *dt_str;
- int fmt_len, dt_len;
+ size_t fmt_len, dt_len;
zval *ztz = NULL;
ZEND_RESULT_CODE rv;
}
list = ecalloc(1, sizeof(*list));
- ZVAL_NEW_ARR(&list->arr);
+ array_init(&list->arr);
if (a->list) {
add_next_index_zval(&a->list->arr, &list->arr);
return FAILURE;
}
+ /* step one level back up */
if (a->list->parent) {
- a->list = a->list->parent;
+ HashTableList *l = a->list->parent;
+
+ efree(a->list);
+ a->list = l;
}
return SUCCESS;
php_error_docref(NULL, E_NOTICE, "Trailing input: '%s'", a.ptr);
}
- do {
+ while (a.list) {
+ HashTableList *l = a.list->parent;
+
ht = Z_ARRVAL(a.list->arr);
- } while ((a.list = a.list->parent));
+ efree(a.list);
+ a.list = l;
+ }
return ht;
}