mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-02 00:04:12 +08:00
mdbx: fix div-by-zero while copy-with-compaction for non-resizeable DB.
Change-Id: Ice7f5675c3b2864195874f2e3c4ade9148cad048
This commit is contained in:
parent
fac0d47913
commit
eec465704d
16
src/core.c
16
src/core.c
@ -15233,19 +15233,15 @@ done:
|
||||
|
||||
static __cold void compact_fixup_meta(MDBX_env *env, MDBX_meta *meta) {
|
||||
/* Calculate filesize taking in account shrink/growing thresholds */
|
||||
if (meta->mm_geo.next > meta->mm_geo.now) {
|
||||
const pgno_t aligned = pgno_align2os_pgno(
|
||||
env,
|
||||
pgno_add(meta->mm_geo.next,
|
||||
meta->mm_geo.grow - meta->mm_geo.next % meta->mm_geo.grow));
|
||||
meta->mm_geo.now = aligned;
|
||||
} else if (meta->mm_geo.next < meta->mm_geo.now) {
|
||||
if (meta->mm_geo.next != meta->mm_geo.now) {
|
||||
meta->mm_geo.now = meta->mm_geo.next;
|
||||
const pgno_t aligner =
|
||||
meta->mm_geo.grow ? meta->mm_geo.grow : meta->mm_geo.shrink;
|
||||
const pgno_t aligned = pgno_align2os_pgno(
|
||||
env, meta->mm_geo.next + aligner - meta->mm_geo.next % aligner);
|
||||
meta->mm_geo.now = aligned;
|
||||
if (aligner) {
|
||||
const pgno_t aligned = pgno_align2os_pgno(
|
||||
env, meta->mm_geo.next + aligner - meta->mm_geo.next % aligner);
|
||||
meta->mm_geo.now = aligned;
|
||||
}
|
||||
}
|
||||
|
||||
if (meta->mm_geo.now < meta->mm_geo.lower)
|
||||
|
Loading…
x
Reference in New Issue
Block a user