mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-20 22:59:34 -05:00
parent
9026894e05
commit
f537429b64
2 changed files with 4 additions and 5 deletions
|
|
@ -1334,7 +1334,8 @@ int mdb_cursor_get(MDB_cursor *cursor, MDB_val *key, MDB_val *data,
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>#MDB_CURRENT - overwrite the data of the key/data pair to which
|
* <li>#MDB_CURRENT - overwrite the data of the key/data pair to which
|
||||||
* the cursor refers with the specified data item. The \b key
|
* the cursor refers with the specified data item. The \b key
|
||||||
* parameter is ignored.
|
* parameter is not used for positioning the cursor, but should
|
||||||
|
* still be provided.
|
||||||
* <li>#MDB_NODUPDATA - enter the new key/data pair only if it does not
|
* <li>#MDB_NODUPDATA - enter the new key/data pair only if it does not
|
||||||
* already appear in the database. This flag may only be specified
|
* already appear in the database. This flag may only be specified
|
||||||
* if the database was opened with #MDB_DUPSORT. The function will
|
* if the database was opened with #MDB_DUPSORT. The function will
|
||||||
|
|
|
||||||
|
|
@ -2770,7 +2770,6 @@ mdb_freelist_save(MDB_txn *txn)
|
||||||
mop += mop_len;
|
mop += mop_len;
|
||||||
rc = mdb_cursor_first(&mc, &key, &data);
|
rc = mdb_cursor_first(&mc, &key, &data);
|
||||||
for (; !rc; rc = mdb_cursor_next(&mc, &key, &data, MDB_NEXT)) {
|
for (; !rc; rc = mdb_cursor_next(&mc, &key, &data, MDB_NEXT)) {
|
||||||
unsigned flags = MDB_CURRENT;
|
|
||||||
txnid_t id = *(txnid_t *)key.mv_data;
|
txnid_t id = *(txnid_t *)key.mv_data;
|
||||||
ssize_t len = (ssize_t)(data.mv_size / sizeof(MDB_ID)) - 1;
|
ssize_t len = (ssize_t)(data.mv_size / sizeof(MDB_ID)) - 1;
|
||||||
MDB_ID save;
|
MDB_ID save;
|
||||||
|
|
@ -2780,12 +2779,11 @@ mdb_freelist_save(MDB_txn *txn)
|
||||||
if (len > mop_len) {
|
if (len > mop_len) {
|
||||||
len = mop_len;
|
len = mop_len;
|
||||||
data.mv_size = (len + 1) * sizeof(MDB_ID);
|
data.mv_size = (len + 1) * sizeof(MDB_ID);
|
||||||
flags = 0;
|
|
||||||
}
|
}
|
||||||
data.mv_data = mop -= len;
|
data.mv_data = mop -= len;
|
||||||
save = mop[0];
|
save = mop[0];
|
||||||
mop[0] = len;
|
mop[0] = len;
|
||||||
rc = mdb_cursor_put(&mc, &key, &data, flags);
|
rc = mdb_cursor_put(&mc, &key, &data, MDB_CURRENT);
|
||||||
mop[0] = save;
|
mop[0] = save;
|
||||||
if (rc || !(mop_len -= len))
|
if (rc || !(mop_len -= len))
|
||||||
break;
|
break;
|
||||||
|
|
@ -6152,7 +6150,7 @@ current:
|
||||||
*/
|
*/
|
||||||
if (F_ISSET(flags, MDB_RESERVE))
|
if (F_ISSET(flags, MDB_RESERVE))
|
||||||
data->mv_data = olddata.mv_data;
|
data->mv_data = olddata.mv_data;
|
||||||
else if (data->mv_size)
|
else if (!(mc->mc_flags & C_SUB))
|
||||||
memcpy(olddata.mv_data, data->mv_data, data->mv_size);
|
memcpy(olddata.mv_data, data->mv_data, data->mv_size);
|
||||||
else
|
else
|
||||||
memcpy(NODEKEY(leaf), key->mv_data, key->mv_size);
|
memcpy(NODEKEY(leaf), key->mv_data, key->mv_size);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue