[Date Prev][Date Next] [Chronological] [Thread] [Top]

(ITS#8542) mdb_dbi_open() can break mainDB cursors

Full_Name: Hallvard B Furuseth
Version: LMDB_0.9.18
URL: ftp://ftp.openldap.org/incoming/Hallvard-Furuseth-161210.c
Submission from: (NULL) (
Submitted by: hallvard

...because mdb_dbi_open() does not track its cursor.  Demo enclosed.

Fix: Put the mdb_cursor_put() in WITH_CURSOR_TRACKING(mc, ...).

I do wonder why failing to track one cursor apparently breaks another
cursor, instead of the un-tracked one.  Though maybe the un-tracked
cursor is broken, and writing through it goes to the wrong place.