From 87bae740949ff1b91e774de99ba5c96e5258153d Mon Sep 17 00:00:00 2001 From: DaniPopes <57450786+DaniPopes@users.noreply.github.com> Date: Tue, 3 Feb 2026 21:16:32 +0100 Subject: [PATCH] chore: decode MDBX error code (#21766) --- crates/storage/libmdbx-rs/src/error.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/crates/storage/libmdbx-rs/src/error.rs b/crates/storage/libmdbx-rs/src/error.rs index 007d828af2..b395dc4836 100644 --- a/crates/storage/libmdbx-rs/src/error.rs +++ b/crates/storage/libmdbx-rs/src/error.rs @@ -133,7 +133,7 @@ pub enum Error { #[error("permission denied to setup database")] Permission, /// Unknown error code. - #[error("unknown error code: {0}")] + #[error("{}", Error::fmt_other(*.0))] Other(i32), } @@ -215,6 +215,13 @@ impl Error { Self::Other(err_code) => *err_code, } } + + fn fmt_other(code: i32) -> String { + let mut s = String::with_capacity(1024); + let desc = unsafe { ffi::mdbx_strerror_r(code, s.as_mut_ptr().cast(), 1024) }; + let desc = unsafe { std::ffi::CStr::from_ptr(desc) }.to_string_lossy(); + desc.into_owned() + } } impl From for i32 {