]> pd.if.org Git - btree/blobdiff - threadskv8.c
fix latch protocol in bt_atomicload
[btree] / threadskv8.c
index 02ac19847c5cbf3eb3cf6991a281049d73b728f1..44411881f67455309eede48bb81ef3ae46e81d77 100644 (file)
@@ -2325,17 +2325,19 @@ uint slot;
          bt_unlockpage(bt, BtLockRead, set->latch);
          bt_lockpage(bt, BtLockAtomic, set->latch);
          bt_lockpage(bt, BtLockRead, set->latch);
-         bt_unlockpage(bt, BtLockAccess, set->latch);
 
          if( !set->page->kill )
-          if( slot = bt_findslot (set->page, key, len) )
+          if( slot = bt_findslot (set->page, key, len) ) {
+               bt_unlockpage(bt, BtLockAccess, set->latch);
                return slot;
+          }
 
          bt_unlockpage(bt, BtLockAtomic, set->latch);
          }
 
        //  slide right into next page
 
+       bt_unlockpage(bt, BtLockAccess, set->latch);
        page_no = bt_getid(set->page->right);
        prevlatch = set->latch;
   }