summaryrefslogtreecommitdiff
path: root/ext/spl/spl_dllist.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/spl/spl_dllist.c')
-rw-r--r--ext/spl/spl_dllist.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/ext/spl/spl_dllist.c b/ext/spl/spl_dllist.c
index c576104139..5e42c44d42 100644
--- a/ext/spl/spl_dllist.c
+++ b/ext/spl/spl_dllist.c
@@ -764,7 +764,7 @@ PHP_METHOD(SplDoublyLinkedList, offsetGet)
PHP_METHOD(SplDoublyLinkedList, offsetSet)
{
zend_long index;
- zend_bool index_is_null = 1;
+ bool index_is_null = 1;
zval *value;
spl_dllist_object *intern;
@@ -1193,8 +1193,8 @@ PHP_METHOD(SplDoublyLinkedList, __serialize)
zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &tmp);
/* members */
- ZVAL_ARR(&tmp, zend_std_get_properties(&intern->std));
- Z_TRY_ADDREF(tmp);
+ ZVAL_ARR(&tmp, zend_proptable_to_symtable(
+ zend_std_get_properties(&intern->std), /* always_duplicate */ 1));
zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &tmp);
} /* }}} */
@@ -1332,7 +1332,12 @@ zend_object_iterator *spl_dllist_get_iterator(zend_class_entry *ce, zval *object
PHP_MINIT_FUNCTION(spl_dllist) /* {{{ */
{
- REGISTER_SPL_STD_CLASS_EX(SplDoublyLinkedList, spl_dllist_object_new, class_SplDoublyLinkedList_methods);
+ spl_ce_SplDoublyLinkedList = register_class_SplDoublyLinkedList(
+ zend_ce_iterator, zend_ce_countable, zend_ce_arrayaccess, zend_ce_serializable
+ );
+ spl_ce_SplDoublyLinkedList->create_object = spl_dllist_object_new;
+ spl_ce_SplDoublyLinkedList->get_iterator = spl_dllist_get_iterator;
+
memcpy(&spl_handler_SplDoublyLinkedList, &std_object_handlers, sizeof(zend_object_handlers));
spl_handler_SplDoublyLinkedList.offset = XtOffsetOf(spl_dllist_object, std);
@@ -1347,17 +1352,12 @@ PHP_MINIT_FUNCTION(spl_dllist) /* {{{ */
REGISTER_SPL_CLASS_CONST_LONG(SplDoublyLinkedList, "IT_MODE_DELETE",SPL_DLLIST_IT_DELETE);
REGISTER_SPL_CLASS_CONST_LONG(SplDoublyLinkedList, "IT_MODE_KEEP", 0);
- REGISTER_SPL_IMPLEMENTS(SplDoublyLinkedList, Iterator);
- REGISTER_SPL_IMPLEMENTS(SplDoublyLinkedList, Countable);
- REGISTER_SPL_IMPLEMENTS(SplDoublyLinkedList, ArrayAccess);
- REGISTER_SPL_IMPLEMENTS(SplDoublyLinkedList, Serializable);
-
- spl_ce_SplDoublyLinkedList->get_iterator = spl_dllist_get_iterator;
-
- REGISTER_SPL_SUB_CLASS_EX(SplQueue, SplDoublyLinkedList, spl_dllist_object_new, class_SplQueue_methods);
- REGISTER_SPL_SUB_CLASS_EX(SplStack, SplDoublyLinkedList, spl_dllist_object_new, class_SplStack_methods);
-
+ spl_ce_SplQueue = register_class_SplQueue(spl_ce_SplDoublyLinkedList);
+ spl_ce_SplQueue->create_object = spl_dllist_object_new;
spl_ce_SplQueue->get_iterator = spl_dllist_get_iterator;
+
+ spl_ce_SplStack = register_class_SplStack(spl_ce_SplDoublyLinkedList);
+ spl_ce_SplStack->create_object = spl_dllist_object_new;
spl_ce_SplStack->get_iterator = spl_dllist_get_iterator;
return SUCCESS;