mirror of
https://github.com/isar/libmdbx.git
synced 2025-05-16 06:07:46 +08:00
mdbx: дополнительные проверки сигнатур курсоров при итерации связанных списков.
This commit is contained in:
parent
28ca18972a
commit
dd9f608320
@ -115,8 +115,12 @@ int mdbx_cursor_unbind(MDBX_cursor *mc) {
|
||||
cASSERT(mc, dbi < mc->txn->n_dbi);
|
||||
if (dbi < mc->txn->n_dbi) {
|
||||
MDBX_cursor **prev = &mc->txn->cursors[dbi];
|
||||
while (*prev && *prev != mc)
|
||||
while (*prev) {
|
||||
ENSURE(mc->txn->env, (*prev)->signature == cur_signature_live || (*prev)->signature == cur_signature_wait4eot);
|
||||
if (*prev == mc)
|
||||
break;
|
||||
prev = &(*prev)->next;
|
||||
}
|
||||
cASSERT(mc, *prev == mc);
|
||||
*prev = mc->next;
|
||||
}
|
||||
@ -159,8 +163,12 @@ void mdbx_cursor_close(MDBX_cursor *mc) {
|
||||
tASSERT(txn, dbi < txn->n_dbi);
|
||||
if (dbi < txn->n_dbi) {
|
||||
MDBX_cursor **prev = &txn->cursors[dbi];
|
||||
while (*prev && *prev != mc)
|
||||
while (*prev) {
|
||||
ENSURE(txn->env, (*prev)->signature == cur_signature_live || (*prev)->signature == cur_signature_wait4eot);
|
||||
if (*prev == mc)
|
||||
break;
|
||||
prev = &(*prev)->next;
|
||||
}
|
||||
tASSERT(txn, *prev == mc);
|
||||
*prev = mc->next;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user