From acb1274c089c60488ee0060bd84f537faff54bc8 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Mon, 8 Apr 2024 16:25:37 +0200 Subject: [PATCH] refact: Add callback_get_vec_u8_data Make it easier to correctly use the string callbacks. (cherry picked from commit 32db5dfc020053c36b7a4776313ee72d7bc961dd) --- rust/nix-store/src/store.rs | 4 ++-- rust/nix-util/src/string_return.rs | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/rust/nix-store/src/store.rs b/rust/nix-store/src/store.rs index ba1b4bc..3aeaa48 100644 --- a/rust/nix-store/src/store.rs +++ b/rust/nix-store/src/store.rs @@ -2,7 +2,7 @@ use anyhow::{bail, Result}; use lazy_static::lazy_static; use nix_c_raw as raw; use nix_util::context::Context; -use nix_util::string_return::callback_get_vec_u8; +use nix_util::string_return::{callback_get_vec_u8, callback_get_vec_u8_data}; use std::ffi::CString; use std::ptr::null_mut; use std::ptr::NonNull; @@ -84,7 +84,7 @@ impl Store { self.context.ptr(), self.inner.ptr(), Some(callback_get_vec_u8), - &mut raw_buffer as *mut Vec as *mut std::ffi::c_void, + callback_get_vec_u8_data(&mut raw_buffer), ) }; self.context.check_err()?; diff --git a/rust/nix-util/src/string_return.rs b/rust/nix-util/src/string_return.rs index 9fe5a8f..cfead12 100644 --- a/rust/nix-util/src/string_return.rs +++ b/rust/nix-util/src/string_return.rs @@ -16,6 +16,10 @@ pub unsafe extern "C" fn callback_get_vec_u8( (*ret).extend_from_slice(slice); } +pub fn callback_get_vec_u8_data(vec: &mut Vec) -> *mut std::os::raw::c_void { + vec as *mut Vec as *mut std::os::raw::c_void +} + #[cfg(test)] mod tests { use super::*;