Author: jorton Date: Fri Sep 9 01:40:16 2005 New Revision: 279731 URL: http://svn.apache.org/viewcvs?rev=279731&view=rev Log: Merge r233379 from trunk: * poll/unix/epoll.c (apr_pollset_create): Check for errors from epoll_create(). Don't leak the epoll fd to spawned children; do register the cleanup as a child_cleanup too. Remove a cast to void *. Modified: apr/apr/branches/1.2.x/poll/unix/epoll.c Modified: apr/apr/branches/1.2.x/poll/unix/epoll.c URL: http://svn.apache.org/viewcvs/apr/apr/branches/1.2.x/poll/unix/epoll.c?rev=279731&r1=279730&r2=279731&view=diff ============================================================================== --- apr/apr/branches/1.2.x/poll/unix/epoll.c (original) +++ apr/apr/branches/1.2.x/poll/unix/epoll.c Fri Sep 9 01:40:16 2005 @@ -91,6 +91,13 @@ apr_uint32_t flags) { apr_status_t rv; + int fd; + + fd = epoll_create(size); + if (fd < 0) { + *pollset = NULL; + return errno; + } *pollset = apr_palloc(p, sizeof(**pollset)); #if APR_HAS_THREADS @@ -111,10 +118,9 @@ (*pollset)->nalloc = size; (*pollset)->flags = flags; (*pollset)->pool = p; - (*pollset)->epoll_fd = epoll_create(size); + (*pollset)->epoll_fd = fd; (*pollset)->pollset = apr_palloc(p, size * sizeof(struct epoll_event)); - apr_pool_cleanup_register(p, (void *) (*pollset), backend_cleanup, - apr_pool_cleanup_null); + apr_pool_cleanup_register(p, *pollset, backend_cleanup, backend_cleanup); (*pollset)->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t)); APR_RING_INIT(&(*pollset)->query_ring, pfd_elem_t, link);