Author: jra
Date: 2006-07-10 21:33:52 +0000 (Mon, 10 Jul 2006)
New Revision: 16928

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16928

Log:
Fix the ZERO_ZERO case back to working again. Fix compiler
warning pointed out by Volker (thanks!).
Jeremy.

Modified:
   trunk/source/locking/brlock.c


Changeset:
Modified: trunk/source/locking/brlock.c
===================================================================
--- trunk/source/locking/brlock.c       2006-07-10 20:40:42 UTC (rev 16927)
+++ trunk/source/locking/brlock.c       2006-07-10 21:33:52 UTC (rev 16928)
@@ -740,9 +740,12 @@
        unsigned int i, j;
        struct lock_struct *lock = NULL;
        struct lock_struct *locks = (struct lock_struct *)br_lck->lock_data;
-       enum brl_type deleted_lock_type;
+       enum brl_type deleted_lock_type = READ_LOCK; /* shut the compiler 
up.... */
 
 #if ZERO_ZERO
+       /* Delete write locks by preference... The lock list
+          is sorted in the zero zero case. */
+
        for (i = 0; i < br_lck->num_locks; i++) {
                lock = &locks[i];
 
@@ -755,17 +758,14 @@
 
                        /* found it - delete it */
                        deleted_lock_type = lock->lock_type;
-
-                       if (i < br_lck->num_locks - 1) {
-                               memmove(&locks[i], &locks[i+1], 
-                                       sizeof(*locks)*((br_lck->num_locks-1) - 
i));
-                       }
-
-                       br_lck->num_locks -= 1;
-                       br_lck->modified = True;
-                       return True;
+                       break;
                }
        }
+
+       if (i != br_lck->num_locks) {
+               /* We found it - don't search again. */
+               goto unlock_continue;
+       }
 #endif
 
        for (i = 0; i < br_lck->num_locks; i++) {
@@ -787,6 +787,10 @@
                return False;
        }
 
+#if ZERO_ZERO
+  unlock_continue:
+#endif
+
        /* Actually delete the lock. */
        if (i < br_lck->num_locks - 1) {
                memmove(&locks[i], &locks[i+1], 

Reply via email to