Author: philip
Date: Sat Mar 13 09:26:42 2010
New Revision: 922510

URL: http://svn.apache.org/viewvc?rev=922510&view=rev
Log:
* subversion/libsvn_wc/lock.c
  (svn_wc__release_write_lock): Only release locks held by the context.

* subversion/include/private/svn_wc_private.h
  (svn_wc__release_write_lock): Tweak doc string.

Modified:
    subversion/trunk/subversion/include/private/svn_wc_private.h
    subversion/trunk/subversion/libsvn_wc/lock.c

Modified: subversion/trunk/subversion/include/private/svn_wc_private.h
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_wc_private.h?rev=922510&r1=922509&r2=922510&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_wc_private.h (original)
+++ subversion/trunk/subversion/include/private/svn_wc_private.h Sat Mar 13 
09:26:42 2010
@@ -524,8 +524,8 @@ svn_wc__acquire_write_lock(const char **
 
 /**
  * Recursively release write locks for @a local_abspath, using @a wc_ctx
- * for working copy access.  Locks are not removed if work queue items are
- * present.  Only the @c db member of @c wc_ctx is used.
+ * for working copy access.  Only locks held by @a wc_ctx are released.
+ * Locks are not removed if work queue items are present.
  */
 svn_error_t *
 svn_wc__release_write_lock(svn_wc_context_t *wc_ctx,

Modified: subversion/trunk/subversion/libsvn_wc/lock.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/lock.c?rev=922510&r1=922509&r2=922510&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/lock.c (original)
+++ subversion/trunk/subversion/libsvn_wc/lock.c Sat Mar 13 09:26:42 2010
@@ -1819,6 +1819,7 @@ svn_wc__release_write_lock(svn_wc_contex
   const apr_array_header_t *children;
   apr_uint64_t id;
   svn_skel_t *work_item;
+  svn_boolean_t locked_here;
   int i;
 
   SVN_ERR(svn_wc__db_read_kind(&kind, wc_ctx->db, local_abspath, TRUE,
@@ -1851,7 +1852,10 @@ svn_wc__release_write_lock(svn_wc_contex
         SVN_ERR(svn_wc__release_write_lock(wc_ctx, child_abspath, iterpool));
     }
 
-  SVN_ERR(svn_wc__db_wclock_remove(wc_ctx->db, local_abspath, iterpool));
+  SVN_ERR(svn_wc__db_temp_own_lock(&locked_here, wc_ctx->db, local_abspath,
+                                   iterpool));
+  if (locked_here)
+    SVN_ERR(svn_wc__db_wclock_remove(wc_ctx->db, local_abspath, iterpool));
 
   svn_pool_destroy(iterpool);
 


Reply via email to