Author: rhuijben
Date: Thu Jan 24 18:54:31 2013
New Revision: 1438125

URL: http://svn.apache.org/viewvc?rev=1438125&view=rev
Log:
Resolve issue #4304, by detecting some kinds of shadowed nodes before trying to
set a file read only.

* subversion/libsvn_wc/adm_ops.c
  (svn_wc_remove_lock2): Handle invalid status err.

* subversion/tests/cmdline/lock_tests.py
  (lock_unlock_deleted): Remove XFail marker.

Modified:
    subversion/trunk/subversion/libsvn_wc/adm_ops.c
    subversion/trunk/subversion/tests/cmdline/lock_tests.py

Modified: subversion/trunk/subversion/libsvn_wc/adm_ops.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_ops.c?rev=1438125&r1=1438124&r2=1438125&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/adm_ops.c (original)
+++ subversion/trunk/subversion/libsvn_wc/adm_ops.c Thu Jan 24 18:54:31 2013
@@ -1249,9 +1249,19 @@ svn_wc_remove_lock2(svn_wc_context_t *wc
     }
 
   /* if svn:needs-lock is present, then make the file read-only. */
-  SVN_ERR(svn_wc__internal_propget(&needs_lock, wc_ctx->db, local_abspath,
-                                   SVN_PROP_NEEDS_LOCK, scratch_pool,
-                                   scratch_pool));
+  err = svn_wc__internal_propget(&needs_lock, wc_ctx->db, local_abspath,
+                                 SVN_PROP_NEEDS_LOCK, scratch_pool,
+                                 scratch_pool);
+  if (err)
+    {
+      if (err->apr_err != SVN_ERR_WC_PATH_UNEXPECTED_STATUS)
+        return svn_error_trace(err);
+
+      svn_error_clear(err);
+      return SVN_NO_ERROR; /* Node is shadowed and/or deleted,
+                              so we shouldn't apply its lock */
+    }
+
   if (needs_lock)
     SVN_ERR(svn_io_set_file_read_only(local_abspath, FALSE, scratch_pool));
 

Modified: subversion/trunk/subversion/tests/cmdline/lock_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/lock_tests.py?rev=1438125&r1=1438124&r2=1438125&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/lock_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/lock_tests.py Thu Jan 24 18:54:31 
2013
@@ -1787,8 +1787,6 @@ def locks_stick_over_switch(sbox):
                                         repo_url + '/A',
                                         expected_output, None, expected_status)
 
-
-@XFail()
 @Issue(4304)
 def lock_unlock_deleted(sbox):
   "lock/unlock a deleted file"


Reply via email to