Skip to content

Commit 2d8c56e

Browse files
committed
ffi: remove c_set_rawElementsTapEnv
1 parent 4bc03bf commit 2d8c56e

3 files changed

Lines changed: 16 additions & 24 deletions

File tree

simplicity-sys/depend/env.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,6 @@ const size_t rustsimplicity_0_5_c_alignof_rawElementsTransaction = alignof(rawEl
2525
const size_t rustsimplicity_0_5_c_alignof_rawElementsTapEnv = alignof(rawElementsTapEnv);
2626
const size_t rustsimplicity_0_5_c_alignof_txEnv = alignof(txEnv);
2727

28-
void rustsimplicity_0_5_c_set_rawElementsTapEnv(rawElementsTapEnv *result, const unsigned char *controlBlock, unsigned char pathLen, const unsigned char *scriptCMR)
29-
{
30-
*result = (rawElementsTapEnv){.controlBlock = controlBlock, .pathLen = pathLen, .scriptCMR = scriptCMR};
31-
}
32-
3328
void rustsimplicity_0_5_c_set_txEnv(txEnv *result, const elementsTransaction *tx, const elementsTapEnv *taproot, const unsigned char *genesisHash, unsigned int ix)
3429
{
3530
sha256_midstate genesis;

simplicity-sys/src/c_jets/c_env/elements.rs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,9 @@ pub struct CRawTransaction<'raw> {
125125
#[derive(Debug)]
126126
#[repr(C)]
127127
pub struct CRawTapEnv {
128-
control_block: *const c_uchar,
129-
script_cmr: *const c_uchar,
130-
branch_len: u8,
128+
pub control_block: *const c_uchar,
129+
pub script_cmr: *const c_uchar,
130+
pub branch_len: u8,
131131
}
132132

133133
#[derive(Debug)]
@@ -173,13 +173,6 @@ extern "C" {
173173
#[link_name = "rustsimplicity_0_5_c_alignof_txEnv"]
174174
pub static c_alignof_txEnv: c_size_t;
175175

176-
#[link_name = "rustsimplicity_0_5_c_set_rawElementsTapEnv"]
177-
pub fn c_set_rawTapEnv(
178-
result: *mut CRawTapEnv,
179-
controlBlock: *const c_uchar,
180-
pathLen: c_uchar,
181-
scriptCMR: *const c_uchar,
182-
);
183176
#[link_name = "rustsimplicity_0_5_c_set_txEnv"]
184177
pub fn c_set_txEnv(
185178
result: *mut CTxEnv,

src/jet/elements/c_env.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -148,16 +148,20 @@ pub(super) fn new_tap_env(
148148
control_block: &ControlBlock,
149149
script_cmr: Cmr,
150150
) -> *mut c_elements::CTapEnv {
151+
let cb_ser = control_block.serialize();
152+
let raw_tap_env = c_elements::CRawTapEnv {
153+
control_block: cb_ser.as_ptr(),
154+
script_cmr: script_cmr.as_ref().as_ptr(),
155+
branch_len: control_block
156+
.merkle_branch
157+
.as_inner()
158+
.len()
159+
.try_into()
160+
.expect("sane length"),
161+
};
162+
151163
unsafe {
152-
let mut raw_tap_env = std::mem::MaybeUninit::<c_elements::CRawTapEnv>::uninit();
153-
let cb_ser = control_block.serialize();
154-
c_elements::c_set_rawTapEnv(
155-
raw_tap_env.as_mut_ptr(),
156-
cb_ser.as_ptr(),
157-
control_block.merkle_branch.as_inner().len() as c_uchar,
158-
script_cmr.as_ref().as_ptr(),
159-
);
160-
let raw_tap_env = raw_tap_env.assume_init();
164+
// SAFETY: this is a FFI call and we constructed its argument correctly.
161165
c_elements::simplicity_mallocTapEnv(&raw_tap_env)
162166
}
163167
}

0 commit comments

Comments
 (0)