Skip to content

Commit 644710e

Browse files
committed
Remove unused flags from spl_heap_it
Which makes it equivalent to just zend_user_iterator, so drop the wrapper entirely.
1 parent 1487dd0 commit 644710e

File tree

1 file changed

+15
-36
lines changed

1 file changed

+15
-36
lines changed

ext/spl/spl_heap.c

Lines changed: 15 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,6 @@ struct _spl_heap_object {
7373
zend_object std;
7474
};
7575

76-
/* define an overloaded iterator structure */
77-
struct _spl_heap_it {
78-
zend_user_iterator intern;
79-
int flags;
80-
};
81-
8276
typedef struct _spl_pqueue_elem {
8377
zval data;
8478
zval priority;
@@ -892,10 +886,8 @@ PHP_METHOD(SplMaxHeap, compare)
892886

893887
static void spl_heap_it_dtor(zend_object_iterator *iter) /* {{{ */
894888
{
895-
spl_heap_it *iterator = (spl_heap_it *)iter;
896-
897889
zend_user_it_invalidate_current(iter);
898-
zval_ptr_dtor(&iterator->intern.it.data);
890+
zval_ptr_dtor(&iter->data);
899891
}
900892
/* }}} */
901893

@@ -1102,52 +1094,39 @@ static const zend_object_iterator_funcs spl_pqueue_it_funcs = {
11021094

11031095
zend_object_iterator *spl_heap_get_iterator(zend_class_entry *ce, zval *object, int by_ref) /* {{{ */
11041096
{
1105-
spl_heap_it *iterator;
1106-
spl_heap_object *heap_object = Z_SPLHEAP_P(object);
1107-
11081097
if (by_ref) {
11091098
zend_throw_error(NULL, "An iterator cannot be used with foreach by reference");
11101099
return NULL;
11111100
}
11121101

1113-
iterator = emalloc(sizeof(spl_heap_it));
1102+
zend_user_iterator *iterator = emalloc(sizeof(zend_user_iterator));
1103+
zend_iterator_init(&iterator->it);
11141104

1115-
zend_iterator_init(&iterator->intern.it);
1105+
ZVAL_OBJ_COPY(&iterator->it.data, Z_OBJ_P(object));
1106+
iterator->it.funcs = &spl_heap_it_funcs;
1107+
iterator->ce = ce;
1108+
ZVAL_UNDEF(&iterator->value);
11161109

1117-
Z_ADDREF_P(object);
1118-
ZVAL_OBJ(&iterator->intern.it.data, Z_OBJ_P(object));
1119-
iterator->intern.it.funcs = &spl_heap_it_funcs;
1120-
iterator->intern.ce = ce;
1121-
iterator->flags = heap_object->flags;
1122-
ZVAL_UNDEF(&iterator->intern.value);
1123-
1124-
return &iterator->intern.it;
1110+
return &iterator->it;
11251111
}
11261112
/* }}} */
11271113

11281114
zend_object_iterator *spl_pqueue_get_iterator(zend_class_entry *ce, zval *object, int by_ref) /* {{{ */
11291115
{
1130-
spl_heap_it *iterator;
1131-
spl_heap_object *heap_object = Z_SPLHEAP_P(object);
1132-
11331116
if (by_ref) {
11341117
zend_throw_error(NULL, "An iterator cannot be used with foreach by reference");
11351118
return NULL;
11361119
}
11371120

1138-
iterator = emalloc(sizeof(spl_heap_it));
1139-
1140-
zend_iterator_init((zend_object_iterator*)iterator);
1141-
1142-
Z_ADDREF_P(object);
1143-
ZVAL_OBJ(&iterator->intern.it.data, Z_OBJ_P(object));
1144-
iterator->intern.it.funcs = &spl_pqueue_it_funcs;
1145-
iterator->intern.ce = ce;
1146-
iterator->flags = heap_object->flags;
1121+
zend_user_iterator *iterator = emalloc(sizeof(zend_user_iterator));
1122+
zend_iterator_init(&iterator->it);
11471123

1148-
ZVAL_UNDEF(&iterator->intern.value);
1124+
ZVAL_OBJ_COPY(&iterator->it.data, Z_OBJ_P(object));
1125+
iterator->it.funcs = &spl_pqueue_it_funcs;
1126+
iterator->ce = ce;
1127+
ZVAL_UNDEF(&iterator->value);
11491128

1150-
return &iterator->intern.it;
1129+
return &iterator->it;
11511130
}
11521131
/* }}} */
11531132

0 commit comments

Comments
 (0)