fix ErrorContext::peak always returning Ok(())

This commit is contained in:
do butterflies cry? 2026-04-13 20:28:40 +10:00
parent fe369966cd
commit 1f21d5f434
Signed by: cry
GPG key ID: F68745A836CA0412

View file

@ -28,7 +28,6 @@ use std::ptr::NonNull;
use super::{NixError, NixideResult}; use super::{NixError, NixideResult};
use crate::stdext::{AsCPtr as _, CCharPtrExt as _}; use crate::stdext::{AsCPtr as _, CCharPtrExt as _};
use crate::sys; use crate::sys;
use crate::util::panic_issue_call_failed;
use crate::util::wrap; use crate::util::wrap;
use crate::util::wrappers::AsInnerPtr; use crate::util::wrappers::AsInnerPtr;
@ -100,7 +99,7 @@ impl Into<NixideResult<()>> for &ErrorContext {
}; };
let msg = match self.get_msg() { let msg = match self.get_msg() {
Some(msg) => msg, Some(msg) => msg,
None => return Ok(()), None => String::new(),
}; };
let err = match inner { let err = match inner {
@ -109,13 +108,8 @@ impl Into<NixideResult<()>> for &ErrorContext {
sys::NixErr::Overflow => NixError::Overflow, sys::NixErr::Overflow => NixError::Overflow,
sys::NixErr::Key => NixError::KeyNotFound(None), sys::NixErr::Key => NixError::KeyNotFound(None),
sys::NixErr::NixError => NixError::ExprEval { sys::NixErr::NixError => NixError::ExprEval {
name: self name: self.get_nix_err_name().unwrap(),
.get_nix_err_name() info_msg: self.get_nix_err_info_msg().unwrap_or_else(|| String::new()),
.unwrap_or_else(|| panic_issue_call_failed!()),
info_msg: self
.get_nix_err_info_msg()
.unwrap_or_else(|| panic_issue_call_failed!()),
}, },
// XXX: WARNING: Recoverable only exists in later version of Nix // XXX: WARNING: Recoverable only exists in later version of Nix
@ -217,7 +211,7 @@ impl ErrorContext {
/// ///
/// This function **never fails**. /// This function **never fails**.
/// ///
fn get_err(&self) -> Option<sys::NixErr> { pub fn get_err(&self) -> Option<sys::NixErr> {
match unsafe { sys::nix_err_code(self.as_ptr()) } { match unsafe { sys::nix_err_code(self.as_ptr()) } {
sys::NixErr::Ok => None, sys::NixErr::Ok => None,
err => Some(err), err => Some(err),
@ -254,7 +248,7 @@ impl ErrorContext {
/// Hence we can just test whether the returned pointer is a `NULL` pointer, /// Hence we can just test whether the returned pointer is a `NULL` pointer,
/// and avoid passing in a [NixCContext] struct. /// and avoid passing in a [NixCContext] struct.
/// ///
fn get_msg(&self) -> Option<String> { pub fn get_msg(&self) -> Option<String> {
// NOTE: an Err here only occurs when `self.get_code() == Ok(())` // NOTE: an Err here only occurs when `self.get_code() == Ok(())`
let mut n: c_uint = 0; let mut n: c_uint = 0;
let result = wrap::nix_fn!(|ctx: &ErrorContext| unsafe { let result = wrap::nix_fn!(|ctx: &ErrorContext| unsafe {