jcd@tribudubois.net wrote:
Full_Name: Jean-Christophe Dubois Version: 2.4.40 OS: Linux URL: ftp://ftp.openldap.org/incoming/ Submission from: (NULL) (78.235.240.156)
In mdb_cursor_prev() there is some dead code as the (op == MDB_PREV_DUP) cannot be reached in the else block of the following if condition:
Apparently caused by commit 6423c877 for ITS#7671. Unfortunately you've identified an actual bug, the current code will fail to return NOTFOUND when it should. I.e., if the caller used MDB_PREV_DUP and the current node has no DUPDATA.
Fixed in mdb.master.
if (op == MDB_PREV || op == MDB_PREV_DUP) { ... } else { ... if (op == MDB_PREV_DUP) ... }
The dead code can be removed.
Patch available at the following URL:
https://github.com/jcdubois/lmdb/commit/87c58701f7b7226d6d7bcf6be18db085cce0...
JC