From: Howard Chu Date: Tue, 2 Apr 2013 02:49:40 +0000 (-0700) Subject: More fixes for MDB_LAST X-Git-Tag: OPENLDAP_REL_ENG_2_4_36~89^2~7 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=cb1cc6483136b1404de29731279f81878fdf1199;p=openldap More fixes for MDB_LAST Make sure C_INITIALIZED gets set on successful call --- diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 5980384d8d..28f34522f7 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -4669,9 +4669,9 @@ mdb_cursor_last(MDB_cursor *mc, MDB_val *key, MDB_val *data) } assert(IS_LEAF(mc->mc_pg[mc->mc_top])); - mc->mc_flags |= C_INITIALIZED|C_EOF; mc->mc_ki[mc->mc_top] = NUMKEYS(mc->mc_pg[mc->mc_top]) - 1; } + mc->mc_flags |= C_INITIALIZED|C_EOF; leaf = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]); if (IS_LEAF2(mc->mc_pg[mc->mc_top])) { diff --git a/libraries/liblmdb/mtest.c b/libraries/liblmdb/mtest.c index 42b8658507..55cdd43c38 100644 --- a/libraries/liblmdb/mtest.c +++ b/libraries/liblmdb/mtest.c @@ -101,6 +101,11 @@ int main(int argc,char * argv[]) (int) key.mv_size, (char *) key.mv_data, (int) data.mv_size, (char *) data.mv_data); } + printf("Cursor last\n"); + rc = mdb_cursor_get(cursor, &key, &data, MDB_LAST); + printf("key: %.*s, data: %.*s\n", + (int) key.mv_size, (char *) key.mv_data, + (int) data.mv_size, (char *) data.mv_data); printf("Cursor prev\n"); while ((rc = mdb_cursor_get(cursor, &key, &data, MDB_PREV)) == 0) { printf("key: %.*s, data: %.*s\n",