|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2001-04-30 05:15 UTC] zeev@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 03:00:01 2025 UTC |
from Zend/zend_list.c Note that list is passed in, but &EG(regular_list) is used wherever list should be used. static inline int zend_list_do_delete(HashTable *list,int id) { zend_rsrc_list_entry *le; ELS_FETCH(); if (zend_hash_index_find(&EG(regular_list), id, (void **) &le)==SUCCESS) { /* printf("del(%d): %d->%d\n", id, le->refcount, le->refcount-1); */ if (--le->refcount<=0) { return zend_hash_index_del(&EG(regular_list), id); } else { return SUCCESS; } } else { return FAILURE; } } . . . Scroll down, and we see that both zend_list_delete and zend_plist_delete are calling this with different hashtable args. It looks as though we must be leaking memory whenever zend_plist_delete is called. ZEND_API int zend_list_delete(int id) { ELS_FETCH(); return zend_list_do_delete(&EG(regular_list), id); } ZEND_API int zend_plist_delete(int id) { ELS_FETCH(); return zend_list_do_delete(&EG(persistent_list), id); }