mdbx: добавление assert-проверок для отлова ошибок приводящих к переполнению/повреждению страниц.

This commit is contained in:
Леонид Юрьев (Leonid Yuriev) 2025-02-21 16:01:03 +03:00
parent 9568209ee4
commit 936c25e671
2 changed files with 9 additions and 2 deletions

View File

@ -246,9 +246,15 @@ MDBX_NOTHROW_PURE_FUNCTION static inline const page_t *data_page(const void *dat
MDBX_NOTHROW_PURE_FUNCTION static inline meta_t *page_meta(page_t *mp) { return (meta_t *)page_data(mp); }
MDBX_NOTHROW_PURE_FUNCTION static inline size_t page_numkeys(const page_t *mp) { return mp->lower >> 1; }
MDBX_NOTHROW_PURE_FUNCTION static inline size_t page_numkeys(const page_t *mp) {
assert(mp->lower <= mp->upper);
return mp->lower >> 1;
}
MDBX_NOTHROW_PURE_FUNCTION static inline size_t page_room(const page_t *mp) { return mp->upper - mp->lower; }
MDBX_NOTHROW_PURE_FUNCTION static inline size_t page_room(const page_t *mp) {
assert(mp->lower <= mp->upper);
return mp->upper - mp->lower;
}
MDBX_NOTHROW_PURE_FUNCTION static inline size_t page_space(const MDBX_env *env) {
STATIC_ASSERT(PAGEHDRSZ % 2 == 0);

View File

@ -1228,6 +1228,7 @@ int page_split(MDBX_cursor *mc, const MDBX_val *const newkey, MDBX_val *const ne
/* root split? */
prev_top += mc->top - top;
cASSERT(mn, prev_top <= mn->top && prev_top <= mc->top);
/* Right page might now have changed parent.
* Check if left page also changed parent. */