From f98f0859e1b690bffc91953872aac3761d37f6a0 Mon Sep 17 00:00:00 2001 From: tokatoka Date: Tue, 10 Jan 2023 06:45:10 +0900 Subject: [PATCH] tmp --- src/tinyinst.rs | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/tinyinst.rs b/src/tinyinst.rs index 49ef568..fe3c151 100644 --- a/src/tinyinst.rs +++ b/src/tinyinst.rs @@ -119,7 +119,8 @@ impl litecov::Coverage { pub struct TinyInst { tinyinst_ptr: UniquePtr, - program_args: Vec, + program_args_cstr: Vec, + program_args_ptr: Vec<*mut c_char>, coverage_ptr: UniquePtr, timeout: u32, } @@ -127,7 +128,7 @@ pub struct TinyInst { impl Debug for TinyInst { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { f.debug_struct("TinyInst") - .field("program_args", &self.program_args) + .field("program_args_cstr", &self.program_args_cstr) .field("timeout", &self.timeout) .finish_non_exhaustive() } @@ -162,17 +163,7 @@ impl TinyInst { tinyinst_args_ptr.as_mut_ptr(), ); - TinyInst { - tinyinst_ptr, - program_args: program_args.to_vec(), - timeout, - coverage_ptr: litecov::Coverage::new(), - } - } - - pub unsafe fn run(&mut self) -> litecov::RunResult { - let program_args_cstr: Vec = self - .program_args + let program_args_cstr: Vec = program_args .iter() .map(|arg| CString::new(arg.as_str()).unwrap()) .collect(); @@ -182,9 +173,20 @@ impl TinyInst { .map(|arg| arg.as_ptr() as *mut c_char) .collect(); program_args_ptr.push(core::ptr::null_mut()); + + TinyInst { + tinyinst_ptr, + program_args_cstr, + program_args_ptr, + timeout, + coverage_ptr: litecov::Coverage::new(), + } + } + + pub unsafe fn run(&mut self) -> litecov::RunResult { self.tinyinst_ptr.pin_mut().Run( - i32::try_from(self.program_args.len()).unwrap(), - program_args_ptr.as_mut_ptr(), + i32::try_from(self.program_args_cstr.len()).unwrap(), + self.program_args_ptr.as_mut_ptr(), self.timeout, self.timeout, )