--- bt_seq.c.orig 2009-11-06 12:39:34.000000000 -0800 +++ bt_seq.c 2009-11-06 12:40:06.000000000 -0800 @@ -369,18 +369,19 @@ __bt_first(BTREE *t, const DBT *key, EPG * occurs. */ if (ep->index == 0) { + PAGE *hprev; if (h->prevpg == P_INVALID) break; if (h->pgno != save.page->pgno) mpool_put(t->bt_mp, h, 0); - if ((h = mpool_get(t->bt_mp, + if ((hprev = mpool_get(t->bt_mp, h->prevpg, 0)) == NULL) { if (h->pgno == save.page->pgno) mpool_put(t->bt_mp, save.page, 0); return (RET_ERROR); } - ep->page = h; + ep->page = h = hprev; ep->index = NEXTINDEX(h); } --ep->index;