Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Lukas However
OpenLDAP
Commits
4b9aed26
Commit
4b9aed26
authored
May 20, 2014
by
Howard Chu
Browse files
Fix mdb_rebalance collapsing root
Shift the rest of the cursor stack as needed
parent
4844a72d
Changes
2
Hide whitespace changes
Inline
Side-by-side
libraries/liblmdb/COPYRIGHT
View file @
4b9aed26
Copyright 2011-201
3
Howard Chu, Symas Corp.
Copyright 2011-201
4
Howard Chu, Symas Corp.
All rights reserved.
Redistribution and use in source and binary forms, with or without
...
...
libraries/liblmdb/mdb.c
View file @
4b9aed26
...
...
@@ -7383,6 +7383,7 @@ mdb_rebalance(MDB_cursor *mc)
}
}
}
else
if
(
IS_BRANCH
(
mp
)
&&
NUMKEYS
(
mp
)
==
1
)
{
int
i
;
DPUTS
(
"collapsing root page!"
);
rc
=
mdb_midl_append
(
&
mc
->
mc_txn
->
mt_free_pgs
,
mp
->
mp_pgno
);
if
(
rc
)
...
...
@@ -7394,6 +7395,10 @@ mdb_rebalance(MDB_cursor *mc)
mc
->
mc_db
->
md_depth
--
;
mc
->
mc_db
->
md_branch_pages
--
;
mc
->
mc_ki
[
0
]
=
mc
->
mc_ki
[
1
];
for
(
i
=
1
;
i
<
mc
->
mc_db
->
md_depth
;
i
++
)
{
mc
->
mc_pg
[
i
]
=
mc
->
mc_pg
[
i
+
1
];
mc
->
mc_ki
[
i
]
=
mc
->
mc_ki
[
i
+
1
];
}
{
/* Adjust other cursors pointing to mp */
MDB_cursor
*
m2
,
*
m3
;
...
...
@@ -7406,7 +7411,6 @@ mdb_rebalance(MDB_cursor *mc)
m3
=
m2
;
if
(
m3
==
mc
||
m3
->
mc_snum
<
mc
->
mc_snum
)
continue
;
if
(
m3
->
mc_pg
[
0
]
==
mp
)
{
int
i
;
m3
->
mc_snum
--
;
m3
->
mc_top
--
;
for
(
i
=
0
;
i
<
m3
->
mc_snum
;
i
++
)
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment