From 918a8d245cf434bac363202ec5b122407f841631 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 11 Sep 2014 09:37:15 -0700 Subject: [PATCH] Fix bugs in cleanpage and splitpage copying values across. --- threadskv5.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/threadskv5.c b/threadskv5.c index da7b9f6..42293dc 100644 --- a/threadskv5.c +++ b/threadskv5.c @@ -2008,8 +2008,7 @@ BtVal *val; val = valptr(bt->frame, cnt); nxt -= val->len + sizeof(BtVal); - ((unsigned char *)page)[nxt] = val->len; - memcpy ((unsigned char *)page + nxt + sizeof(BtVal), val->value, val->len); + memcpy ((unsigned char *)page + nxt, val, val->len + sizeof(BtVal)); // copy the key across @@ -2143,14 +2142,11 @@ uint prev; continue; src = valptr(set->page, cnt); nxt -= src->len + sizeof(BtVal); - val = (BtVal*)((unsigned char *)bt->frame + nxt); - memcpy (val->value, src->value, src->len); - val->len = src->len; + memcpy ((unsigned char *)bt->frame + nxt, src, src->len + sizeof(BtVal)); key = keyptr(set->page, cnt); nxt -= key->len + sizeof(BtKey); - ptr = (BtKey*)((unsigned char *)bt->frame + nxt); - memcpy (ptr, key, key->len + sizeof(BtKey)); + memcpy ((unsigned char *)bt->frame + nxt, key, key->len + sizeof(BtVal)); // add librarian slot @@ -2218,10 +2214,9 @@ uint prev; while( cnt++ < max ) { if( slotptr(bt->frame, cnt)->dead ) continue; - val = valptr(bt->frame, cnt); - nxt -= val->len + sizeof(BtVal); - ((unsigned char *)set->page)[nxt] = val->len; - memcpy ((unsigned char *)set->page + nxt + sizeof(BtVal), val->value, val->len); + src = valptr(bt->frame, cnt); + nxt -= src->len + sizeof(BtVal); + memcpy ((unsigned char *)set->page + nxt, src, src->len + sizeof(BtVal)); key = keyptr(bt->frame, cnt); nxt -= key->len + sizeof(BtKey); -- 2.40.0