@@ -54,14 +54,9 @@ php_poll_fd_entry *php_poll_fd_table_find(php_poll_fd_table *table, int fd)
5454 return zv ? Z_PTR_P (zv ) : NULL ;
5555}
5656
57- php_poll_fd_entry * php_poll_fd_table_get (php_poll_fd_table * table , int fd )
57+ php_poll_fd_entry * php_poll_fd_table_get_new (php_poll_fd_table * table , int fd )
5858{
59- php_poll_fd_entry * entry = php_poll_fd_table_find (table , fd );
60- if (entry ) {
61- return entry ;
62- }
63-
64- entry = php_poll_calloc (1 , sizeof (php_poll_fd_entry ), table -> persistent );
59+ php_poll_fd_entry * entry = php_poll_calloc (1 , sizeof (php_poll_fd_entry ), table -> persistent );
6560 if (!entry ) {
6661 return NULL ;
6762 }
@@ -82,14 +77,25 @@ php_poll_fd_entry *php_poll_fd_table_get(php_poll_fd_table *table, int fd)
8277 return entry ;
8378}
8479
85- void php_poll_fd_table_remove (php_poll_fd_table * table , int fd )
80+ php_poll_fd_entry * php_poll_fd_table_get (php_poll_fd_table * table , int fd )
81+ {
82+ php_poll_fd_entry * entry = php_poll_fd_table_find (table , fd );
83+ if (entry ) {
84+ return entry ;
85+ }
86+
87+ return php_poll_fd_table_get_new (table , fd );
88+ }
89+
90+ bool php_poll_fd_table_remove (php_poll_fd_table * table , int fd )
8691{
8792 zval * zv = zend_hash_index_find (& table -> entries_ht , (zend_ulong ) fd );
88- if (zv ) {
89- php_poll_fd_entry * entry = Z_PTR_P (zv );
90- pefree (entry , table -> persistent );
91- zend_hash_index_del (& table -> entries_ht , (zend_ulong ) fd );
93+ if (zv == NULL ) {
94+ return false;
9295 }
96+ php_poll_fd_entry * entry = Z_PTR_P (zv );
97+ pefree (entry , table -> persistent );
98+ return zend_hash_index_del (& table -> entries_ht , (zend_ulong ) fd ) == SUCCESS ;
9399}
94100
95101/* Helper function for backends that need to iterate over all entries */
0 commit comments