Author: rhuijben
Date: Wed Jan 15 15:11:58 2014
New Revision: 1558416

URL: http://svn.apache.org/r1558416
Log:
Instead of registering a cleanup handler to just destroy an independent pool,
just create a subpool. This avoids a possible ordering problem when the pools
are only cleaned up at exit or fork time.

* subversion/svnserve/logger.c
  (cleanup_logger): Remove function.
  (logger__create_for_stderr,
   logger__create): Create subpool instead of registering cleanup handler.

Modified:
    subversion/trunk/subversion/svnserve/logger.c

Modified: subversion/trunk/subversion/svnserve/logger.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnserve/logger.c?rev=1558416&r1=1558415&r2=1558416&view=diff
==============================================================================
--- subversion/trunk/subversion/svnserve/logger.c (original)
+++ subversion/trunk/subversion/svnserve/logger.c Wed Jan 15 15:11:58 2014
@@ -52,28 +52,16 @@ struct logger_t
   apr_pool_t *pool;
 };
 
-/* Pool cleanup handler.  Make sure we destroy our private pool as well. */
-static apr_status_t cleanup_logger(void *data)
-{
-  logger_t *logger = data;
-  svn_pool_destroy(logger->pool);
-
-  return APR_SUCCESS;
-}
-
 svn_error_t *
 logger__create_for_stderr(logger_t **logger,
                           apr_pool_t *pool)
 {
   logger_t *result = apr_pcalloc(pool, sizeof(*result));
-  result->pool = svn_pool_create(NULL);
+  result->pool = svn_pool_create(pool);
   
   SVN_ERR(svn_stream_for_stderr(&result->stream, pool));
   SVN_ERR(svn_mutex__init(&result->mutex, TRUE, pool));
 
-  apr_pool_cleanup_register(pool, result, cleanup_logger,
-                            apr_pool_cleanup_null);
-  
   *logger = result;
 
   return SVN_NO_ERROR;
@@ -93,11 +81,8 @@ logger__create(logger_t **logger,
   SVN_ERR(svn_mutex__init(&result->mutex, TRUE, pool));
 
   result->stream = svn_stream_from_aprfile2(file, FALSE,  pool);
-  result->pool = svn_pool_create(NULL);
-  
-  apr_pool_cleanup_register(pool, result, cleanup_logger,
-                            apr_pool_cleanup_null);
-  
+  result->pool = svn_pool_create(pool);
+
   *logger = result;
 
   return SVN_NO_ERROR;


Reply via email to