From: Hallvard Furuseth Date: Tue, 21 May 2013 20:44:51 +0000 (+0200) Subject: ITS#7598 Tweak MDB__NODUP,fix mdb_stat. X-Git-Tag: OPENLDAP_REL_ENG_2_4_36~36^2~39 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=a1b16ce5f0f661b0dd5a30706a1d6178cf0fa561;p=openldap ITS#7598 Tweak MDB__NODUP,fix mdb_stat. MDB_NEXT_NODUP, MDB_PREV_NODUP: Allow for non-MDB_DUPSORT databases. No mdb.c code changes needed. mdb_stat.c: Use MDB_NEXT_NODUP, to avoid a crash with a DUPSORT mainDB. --- diff --git a/libraries/liblmdb/lmdb.h b/libraries/liblmdb/lmdb.h index 954ffde1cb..53dab20461 100644 --- a/libraries/liblmdb/lmdb.h +++ b/libraries/liblmdb/lmdb.h @@ -325,13 +325,11 @@ typedef enum MDB_cursor_op { Only for #MDB_DUPSORT */ MDB_NEXT_MULTIPLE, /**< Return all duplicate data items at the next cursor position. Only for #MDB_DUPFIXED */ - MDB_NEXT_NODUP, /**< Position at first data item of next key. - Only for #MDB_DUPSORT */ + MDB_NEXT_NODUP, /**< Position at first data item of next key */ MDB_PREV, /**< Position at previous data item */ MDB_PREV_DUP, /**< Position at previous data item of current key. Only for #MDB_DUPSORT */ - MDB_PREV_NODUP, /**< Position at last data item of previous key. - Only for #MDB_DUPSORT */ + MDB_PREV_NODUP, /**< Position at last data item of previous key */ MDB_SET, /**< Position at specified key */ MDB_SET_KEY, /**< Position at specified key, return key + data */ MDB_SET_RANGE /**< Position at first key greater than or equal to specified key. */ diff --git a/libraries/liblmdb/mdb_stat.c b/libraries/liblmdb/mdb_stat.c index dd0735f242..ca6ad63955 100644 --- a/libraries/liblmdb/mdb_stat.c +++ b/libraries/liblmdb/mdb_stat.c @@ -193,7 +193,7 @@ int main(int argc, char *argv[]) printf("mdb_cursor_open failed, error %d %s\n", rc, mdb_strerror(rc)); goto txn_abort; } - while ((rc = mdb_cursor_get(cursor, &key, NULL, MDB_NEXT)) == 0) { + while ((rc = mdb_cursor_get(cursor, &key, NULL, MDB_NEXT_NODUP)) == 0) { char *str = malloc(key.mv_size+1); MDB_dbi db2; memcpy(str, key.mv_data, key.mv_size);