refact: Add callback_get_vec_u8_data

Make it easier to correctly use the string callbacks.

(cherry picked from commit 32db5dfc020053c36b7a4776313ee72d7bc961dd)
This commit is contained in:
Robert Hensing 2024-04-08 16:25:37 +02:00
parent 7cc9cfbb2b
commit acb1274c08
2 changed files with 6 additions and 2 deletions

View file

@ -2,7 +2,7 @@ use anyhow::{bail, Result};
use lazy_static::lazy_static; use lazy_static::lazy_static;
use nix_c_raw as raw; use nix_c_raw as raw;
use nix_util::context::Context; 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::ffi::CString;
use std::ptr::null_mut; use std::ptr::null_mut;
use std::ptr::NonNull; use std::ptr::NonNull;
@ -84,7 +84,7 @@ impl Store {
self.context.ptr(), self.context.ptr(),
self.inner.ptr(), self.inner.ptr(),
Some(callback_get_vec_u8), Some(callback_get_vec_u8),
&mut raw_buffer as *mut Vec<u8> as *mut std::ffi::c_void, callback_get_vec_u8_data(&mut raw_buffer),
) )
}; };
self.context.check_err()?; self.context.check_err()?;

View file

@ -16,6 +16,10 @@ pub unsafe extern "C" fn callback_get_vec_u8(
(*ret).extend_from_slice(slice); (*ret).extend_from_slice(slice);
} }
pub fn callback_get_vec_u8_data(vec: &mut Vec<u8>) -> *mut std::os::raw::c_void {
vec as *mut Vec<u8> as *mut std::os::raw::c_void
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;