Author: philip
Date: Tue Jul 5 15:35:51 2011
New Revision: 1143108
URL: http://svn.apache.org/viewvc?rev=1143108&view=rev
Log:
Fix issue 3946, ra_neon checkout fail with SVNBulkUpdate off. This
was caused by a libsvn_wc behaviour change in 1.7 and the deprecated
wrappers needed attention as well.
* subversion/libsvn_client/ra.c
(get_wc_prop): Ignore SVN_ERR_WC_PATH_NOT_FOUND.
* subversion/libsvn_wc/deprecated.c
(svn_wc_prop_list): Always destroy temporary context.
(svn_wc_prop_get): Set value to NULL when ignoring
SVN_ERR_WC_PATH_NOT_FOUND, always destroy temporary context.
Modified:
subversion/trunk/subversion/libsvn_client/ra.c
subversion/trunk/subversion/libsvn_wc/deprecated.c
Modified: subversion/trunk/subversion/libsvn_client/ra.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/ra.c?rev=1143108&r1=1143107&r2=1143108&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/ra.c (original)
+++ subversion/trunk/subversion/libsvn_client/ra.c Tue Jul 5 15:35:51 2011
@@ -90,6 +90,7 @@ get_wc_prop(void *baton,
{
callback_baton_t *cb = baton;
const char *local_abspath;
+ svn_error_t *err;
*value = NULL;
@@ -107,9 +108,14 @@ get_wc_prop(void *baton,
if (! strcmp(relpath, item->session_relpath))
{
SVN_ERR_ASSERT(svn_dirent_is_absolute(item->path));
- return svn_error_trace(svn_wc_prop_get2(value, cb->ctx->wc_ctx,
- item->path, name,
- pool, pool));
+ err = svn_wc_prop_get2(value, cb->ctx->wc_ctx, item->path, name,
+ pool, pool);
+ if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
+ {
+ svn_error_clear(err);
+ err = NULL;
+ }
+ return svn_error_trace(err);
}
}
@@ -122,8 +128,14 @@ get_wc_prop(void *baton,
local_abspath = svn_dirent_join(cb->base_dir_abspath, relpath, pool);
- return svn_error_trace(svn_wc_prop_get2(value, cb->ctx->wc_ctx,
- local_abspath, name, pool, pool));
+ err = svn_wc_prop_get2(value, cb->ctx->wc_ctx, local_abspath, name,
+ pool, pool);
+ if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
+ {
+ svn_error_clear(err);
+ err = NULL;
+ }
+ return svn_error_trace(err);
}
/* This implements the 'svn_ra_push_wc_prop_func_t' interface. */
Modified: subversion/trunk/subversion/libsvn_wc/deprecated.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/deprecated.c?rev=1143108&r1=1143107&r2=1143108&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/deprecated.c (original)
+++ subversion/trunk/subversion/libsvn_wc/deprecated.c Tue Jul 5 15:35:51 2011
@@ -2360,11 +2360,10 @@ svn_wc_prop_list(apr_hash_t **props,
{
*props = apr_hash_make(pool);
svn_error_clear(err);
+ err = NULL;
}
- else if (err)
- return svn_error_trace(err);
- return svn_error_trace(svn_wc_context_destroy(wc_ctx));
+ return svn_error_compose_create(err, svn_wc_context_destroy(wc_ctx));
}
svn_error_t *
@@ -2386,11 +2385,13 @@ svn_wc_prop_get(const svn_string_t **val
err = svn_wc_prop_get2(value, wc_ctx, local_abspath, name, pool, pool);
if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
- svn_error_clear(err);
- else
- SVN_ERR(err);
+ {
+ *value = NULL;
+ svn_error_clear(err);
+ err = NULL;
+ }
- return svn_error_trace(svn_wc_context_destroy(wc_ctx));
+ return svn_error_compose_create(err, svn_wc_context_destroy(wc_ctx));
}
/* baton for conflict_func_1to2_wrapper */