hi,
im reviewing the source code of zend_llist.c and it appears there may be an
inconsistency in the way deletions are handled which may cause leaks.
in particular the macro DEL_LLIST_ELEMENT only releases memory for a node
if a destructor is specified for the zend_llist, whereas memory is always
allocated for the node when an insert is performed.
this macro is used only in zend_llist_apply_with_del and
zend_llist_del_element. note that
no other code in the file assumes that the destructor function is
responsible for the deallocation of the _node_
compare DEL_LLIST_ELEMENT (snippet)
if ((l)->dtor) {\
(l)->dtor((current)->data);\
pefree((current), (l)->persistent);\
}\
with zend_llist_destroy
if (l->dtor) {
l->dtor(current->data);
}
pefree(current, l->persistent);
l0t3k
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php