summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2014-09-13 22:05:37 +0200
committerNikita Popov <nikic@php.net>2014-09-13 22:07:51 +0200
commit21a5253ea98a20239457e3c4f785431d14d64de6 (patch)
tree057e545b6525c6e33f3b9183756a96e8625d359b /Zend
parent345b0f44c30d3d42f9a0088718aa712b1d0754d5 (diff)
downloadphp-git-21a5253ea98a20239457e3c4f785431d14d64de6.tar.gz
Make zend_llist_remove_tail a void function
The returned data is already dtored and freed at this point.
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_llist.c38
-rw-r--r--Zend/zend_llist.h2
2 files changed, 17 insertions, 23 deletions
diff --git a/Zend/zend_llist.c b/Zend/zend_llist.c
index ad74bd56cb..0fb49abf5b 100644
--- a/Zend/zend_llist.c
+++ b/Zend/zend_llist.c
@@ -126,32 +126,26 @@ ZEND_API void zend_llist_clean(zend_llist *l)
}
-ZEND_API void *zend_llist_remove_tail(zend_llist *l)
+ZEND_API void zend_llist_remove_tail(zend_llist *l)
{
- zend_llist_element *old_tail;
- void *data;
-
- if ((old_tail = l->tail)) {
- if (old_tail->prev) {
- old_tail->prev->next = NULL;
- } else {
- l->head = NULL;
- }
-
- data = old_tail->data;
-
- l->tail = old_tail->prev;
- if (l->dtor) {
- l->dtor(data);
- }
- pefree(old_tail, l->persistent);
-
- --l->count;
+ zend_llist_element *old_tail = l->tail;
+ if (!old_tail) {
+ return;
+ }
- return data;
+ if (old_tail->prev) {
+ old_tail->prev->next = NULL;
+ } else {
+ l->head = NULL;
}
- return NULL;
+ l->tail = old_tail->prev;
+ --l->count;
+
+ if (l->dtor) {
+ l->dtor(old_tail->data);
+ }
+ pefree(old_tail, l->persistent);
}
diff --git a/Zend/zend_llist.h b/Zend/zend_llist.h
index b05ece8077..602884c27d 100644
--- a/Zend/zend_llist.h
+++ b/Zend/zend_llist.h
@@ -53,7 +53,7 @@ ZEND_API void zend_llist_prepend_element(zend_llist *l, void *element);
ZEND_API void zend_llist_del_element(zend_llist *l, void *element, int (*compare)(void *element1, void *element2));
ZEND_API void zend_llist_destroy(zend_llist *l);
ZEND_API void zend_llist_clean(zend_llist *l);
-ZEND_API void *zend_llist_remove_tail(zend_llist *l);
+ZEND_API void zend_llist_remove_tail(zend_llist *l);
ZEND_API void zend_llist_copy(zend_llist *dst, zend_llist *src);
ZEND_API void zend_llist_apply(zend_llist *l, llist_apply_func_t func TSRMLS_DC);
ZEND_API void zend_llist_apply_with_del(zend_llist *l, int (*func)(void *data));