Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Cursor.Get handles key return values specicially for Set
Fixes #96 Issue #56 illustrated that working with Go memory using "C-style" access patterns does not work well in modern Go runtimes. That problem was thought to be properly addressed, but #96 showed a lingering case where Set does not modify MDB_val key passed to mdb_cursor_get. This commit addresses this lingering case by special-casing return value processing for the Set operation of Cursor.Get. If LMDB will not modify the MDB_val, the returned key must use non-standard methods for copying the value. Likewise, when txn.RawRead is true the Cursor.Get must use a special method to ensure that the returned key shares memory with the corresponding input argument.
- Loading branch information