You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2015/05/01 19:26:06 UTC
svn commit: r1677191 - in /subversion/trunk/subversion:
include/private/svn_subr_private.h libsvn_ra_local/ra_plugin.c
libsvn_subr/dso.c
Author: philip
Date: Fri May 1 17:26:06 2015
New Revision: 1677191
URL: http://svn.apache.org/r1677191
Log:
Fix a client SEGV with ra-local and --enable-runtime-module-search.
When DSO loading is enabled ra-local must pass a pool with an
appropriate lifetime to svn_fs_initialize.
* subversion/include/private/svn_subr_private.h
(svn_dso__pool): New.
* subversion/libsvn_subr/dso.c
(svn_dso__pool): New.
* subversion/libsvn_ra_local/ra_plugin.c
(svn_ra_local__init): Use svn_dso__pool.
Modified:
subversion/trunk/subversion/include/private/svn_subr_private.h
subversion/trunk/subversion/libsvn_ra_local/ra_plugin.c
subversion/trunk/subversion/libsvn_subr/dso.c
Modified: subversion/trunk/subversion/include/private/svn_subr_private.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_subr_private.h?rev=1677191&r1=1677190&r2=1677191&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_subr_private.h (original)
+++ subversion/trunk/subversion/include/private/svn_subr_private.h Fri May 1 17:26:06 2015
@@ -681,6 +681,11 @@ svn_boolean_t
svn_bit_array__get(svn_bit_array__t *array,
apr_size_t idx);
+/* Return the global pool used by the DSO loader, this may be NULL if
+ no DSOs have been loaded. */
+apr_pool_t *
+svn_dso__pool(void);
+
/** @} */
#ifdef __cplusplus
Modified: subversion/trunk/subversion/libsvn_ra_local/ra_plugin.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_local/ra_plugin.c?rev=1677191&r1=1677190&r2=1677191&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_local/ra_plugin.c (original)
+++ subversion/trunk/subversion/libsvn_ra_local/ra_plugin.c Fri May 1 17:26:06 2015
@@ -41,6 +41,7 @@
#include "private/svn_repos_private.h"
#include "private/svn_fspath.h"
#include "private/svn_atomic.h"
+#include "private/svn_subr_private.h"
#define APR_WANT_STRFUNC
#include <apr_want.h>
@@ -1868,8 +1869,8 @@ svn_ra_local__init(const svn_version_t *
SVN_ERR(svn_ver_check_list2(ra_local_version(), checklist, svn_ver_equal));
#ifndef SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL
- /* This assumes that POOL was the pool used to load the dso. */
- SVN_ERR(svn_fs_initialize(pool));
+ /* This means the library was loaded as a DSO, so use the DSO pool. */
+ SVN_ERR(svn_fs_initialize(svn_dso__pool()));
#endif
*vtable = &ra_local_vtable;
Modified: subversion/trunk/subversion/libsvn_subr/dso.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/dso.c?rev=1677191&r1=1677190&r2=1677191&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/dso.c (original)
+++ subversion/trunk/subversion/libsvn_subr/dso.c Fri May 1 17:26:06 2015
@@ -28,6 +28,7 @@
#include "private/svn_mutex.h"
#include "private/svn_atomic.h"
+#include "private/svn_subr_private.h"
/* A mutex to protect our global pool and cache. */
static svn_mutex__t *dso_mutex = NULL;
@@ -122,4 +123,11 @@ svn_dso_load(apr_dso_handle_t **dso, con
return SVN_NO_ERROR;
}
+
+apr_pool_t *
+svn_dso__pool(void)
+{
+ return dso_pool;
+}
+
#endif /* APR_HAS_DSO */