From 6a1ee5feec7ed52f1ab60efc0e14f81b6d81ea74 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Thu, 12 Jan 2017 13:35:31 +0000 Subject: [PATCH 1/3] Fix f8ce8a82717ddefdc912fa47c07f1bdee2a3336b GET_MULTIPLE was broken --- libraries/liblmdb/mdb.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index fdc36bf1cb..2c34383461 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -6345,10 +6345,9 @@ mdb_cursor_get(MDB_cursor *mc, MDB_val *key, MDB_val *data, rc = MDB_INCOMPATIBLE; break; } - if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED)) { - rc = EINVAL; + rc = MDB_SUCCESS; + if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED)) break; - } if (mc->mc_xcursor->mx_cursor.mc_flags & C_EOF) { MDB_cursor *mx = &mc->mc_xcursor->mx_cursor; if (mx->mc_ki[mx->mc_top] >= NUMKEYS(mx->mc_pg[mx->mc_top])-1) { @@ -6357,7 +6356,6 @@ mdb_cursor_get(MDB_cursor *mc, MDB_val *key, MDB_val *data, } mx->mc_flags ^= C_EOF; } - rc = MDB_SUCCESS; goto fetchm; case MDB_NEXT_MULTIPLE: if (data == NULL) { From 2e1d10472ce79f5e76c005a0e52fdc8ac0093580 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Thu, 12 Jan 2017 13:36:35 +0000 Subject: [PATCH 2/3] 0.9.20 still baking --- libraries/liblmdb/CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/liblmdb/CHANGES b/libraries/liblmdb/CHANGES index cf62eb48d6..c2e5ff672e 100644 --- a/libraries/liblmdb/CHANGES +++ b/libraries/liblmdb/CHANGES @@ -1,6 +1,6 @@ LMDB 0.9 Change Log -LMDB 0.9.20 Release (2017/01/11) +LMDB 0.9.20 Release Engineering Fix mdb_load with escaped plaintext (ITS#8558) Fix mdb_cursor_last / mdb_put interaction (ITS#8557) From a87c8fd8c9a4ce49be18a642e3572059f39ed1cf Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Sat, 14 Jan 2017 19:22:34 +0000 Subject: [PATCH 3/3] Further fix f8ce8a82717ddefdc912fa47c07f1bdee2a3336b Fully revert the change to GET_MULTIPLE --- libraries/liblmdb/mdb.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c index 2c34383461..3f43e94b66 100644 --- a/libraries/liblmdb/mdb.c +++ b/libraries/liblmdb/mdb.c @@ -6346,16 +6346,9 @@ mdb_cursor_get(MDB_cursor *mc, MDB_val *key, MDB_val *data, break; } rc = MDB_SUCCESS; - if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED)) + if (!(mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) || + (mc->mc_xcursor->mx_cursor.mc_flags & C_EOF)) break; - if (mc->mc_xcursor->mx_cursor.mc_flags & C_EOF) { - MDB_cursor *mx = &mc->mc_xcursor->mx_cursor; - if (mx->mc_ki[mx->mc_top] >= NUMKEYS(mx->mc_pg[mx->mc_top])-1) { - rc = MDB_NOTFOUND; - break; - } - mx->mc_flags ^= C_EOF; - } goto fetchm; case MDB_NEXT_MULTIPLE: if (data == NULL) {