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 */


Reply via email to