]> Pileus Git - ~andy/linux/blobdiff - lib/btree.c
btree: fix tree corruption in btree_get_prev()
[~andy/linux] / lib / btree.c
index e5ec1e9c1aa52cc08c710a4dcc4c1815cad9c67b..5cf9e74ec3f32a9f0d7fbb247b79f0815ce981b6 100644 (file)
@@ -319,8 +319,8 @@ void *btree_get_prev(struct btree_head *head, struct btree_geo *geo,
 
        if (head->height == 0)
                return NULL;
-retry:
        longcpy(key, __key, geo->keylen);
+retry:
        dec_key(geo, key);
 
        node = head->node;
@@ -351,7 +351,7 @@ retry:
        }
 miss:
        if (retry_key) {
-               __key = retry_key;
+               longcpy(key, retry_key, geo->keylen);
                retry_key = NULL;
                goto retry;
        }