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;