Author: jra Date: 2004-10-15 00:02:55 +0000 (Fri, 15 Oct 2004) New Revision: 2980
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/trunk/source/tdb&rev=2980&nolog=1 Log: Fix incorrect locks/unlocks in tdb_lockkeys()/tdb_unlockkeys(). Spotted by Taj Khattra <[EMAIL PROTECTED]>. Jeremy. Modified: trunk/source/tdb/tdb.c Changeset: Modified: trunk/source/tdb/tdb.c =================================================================== --- trunk/source/tdb/tdb.c 2004-10-15 00:02:55 UTC (rev 2979) +++ trunk/source/tdb/tdb.c 2004-10-15 00:02:55 UTC (rev 2980) @@ -1811,7 +1811,7 @@ if (tdb_already_open(st.st_dev, st.st_ino)) { TDB_LOG((tdb, 2, "tdb_open_ex: " "%s (%d,%d) is already open in this process\n", - name, st.st_dev, st.st_ino)); + name, (int)st.st_dev, (int)st.st_ino)); errno = EBUSY; goto fail; } @@ -1982,13 +1982,13 @@ } /* Finally, lock in order */ for (i = 0; i < number; i++) - if (tdb_lock(tdb, i, F_WRLCK)) + if (tdb_lock(tdb, BUCKET(tdb->lockedkeys[i+1]), F_WRLCK)) break; /* If error, release locks we have... */ if (i < number) { for ( j = 0; j < i; j++) - tdb_unlock(tdb, j, F_WRLCK); + tdb_unlock(tdb, BUCKET(tdb->lockedkeys[j+1]), F_WRLCK); SAFE_FREE(tdb->lockedkeys); return TDB_ERRCODE(TDB_ERR_NOLOCK, -1); } @@ -2002,7 +2002,7 @@ if (!tdb->lockedkeys) return; for (i = 0; i < tdb->lockedkeys[0]; i++) - tdb_unlock(tdb, tdb->lockedkeys[i+1], F_WRLCK); + tdb_unlock(tdb, BUCKET(tdb->lockedkeys[i+1]), F_WRLCK); SAFE_FREE(tdb->lockedkeys); }