mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
ITS#7623 Clear P_SUBP on conversion from fake page
This commit is contained in:
parent
60086c1bc7
commit
1d94ea5b55
@ -5189,6 +5189,7 @@ more:
|
|||||||
MDB_page *mp;
|
MDB_page *mp;
|
||||||
unsigned int offset;
|
unsigned int offset;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
uint16_t fp_flags;
|
||||||
|
|
||||||
fp = NODEDATA(leaf);
|
fp = NODEDATA(leaf);
|
||||||
if (flags == MDB_CURRENT) {
|
if (flags == MDB_CURRENT) {
|
||||||
@ -5208,6 +5209,7 @@ reuse:
|
|||||||
offset = NODESIZE + sizeof(indx_t) + data->mv_size;
|
offset = NODESIZE + sizeof(indx_t) + data->mv_size;
|
||||||
}
|
}
|
||||||
offset += offset & 1;
|
offset += offset & 1;
|
||||||
|
fp_flags = fp->mp_flags;
|
||||||
if (NODESIZE + sizeof(indx_t) + NODEKSZ(leaf) + NODEDSZ(leaf) +
|
if (NODESIZE + sizeof(indx_t) + NODEKSZ(leaf) + NODEDSZ(leaf) +
|
||||||
offset >= mc->mc_txn->mt_env->me_nodemax) {
|
offset >= mc->mc_txn->mt_env->me_nodemax) {
|
||||||
/* yes, convert it */
|
/* yes, convert it */
|
||||||
@ -5231,6 +5233,7 @@ reuse:
|
|||||||
offset = mc->mc_txn->mt_env->me_psize - NODEDSZ(leaf);
|
offset = mc->mc_txn->mt_env->me_psize - NODEDSZ(leaf);
|
||||||
flags |= F_DUPDATA|F_SUBDATA;
|
flags |= F_DUPDATA|F_SUBDATA;
|
||||||
dummy.md_root = mp->mp_pgno;
|
dummy.md_root = mp->mp_pgno;
|
||||||
|
fp_flags &= ~P_SUBP;
|
||||||
} else {
|
} else {
|
||||||
/* no, just grow it */
|
/* no, just grow it */
|
||||||
rdata = &xdata;
|
rdata = &xdata;
|
||||||
@ -5240,7 +5243,7 @@ reuse:
|
|||||||
mp->mp_pgno = mc->mc_pg[mc->mc_top]->mp_pgno;
|
mp->mp_pgno = mc->mc_pg[mc->mc_top]->mp_pgno;
|
||||||
flags |= F_DUPDATA;
|
flags |= F_DUPDATA;
|
||||||
}
|
}
|
||||||
mp->mp_flags = fp->mp_flags | P_DIRTY;
|
mp->mp_flags = fp_flags | P_DIRTY;
|
||||||
mp->mp_pad = fp->mp_pad;
|
mp->mp_pad = fp->mp_pad;
|
||||||
mp->mp_lower = fp->mp_lower;
|
mp->mp_lower = fp->mp_lower;
|
||||||
mp->mp_upper = fp->mp_upper + offset;
|
mp->mp_upper = fp->mp_upper + offset;
|
||||||
|
Loading…
Reference in New Issue
Block a user