From 20ea9c313a58e8df952c77b937db3e128298a5c3 Mon Sep 17 00:00:00 2001 From: Nasr Date: Tue, 16 Jul 2024 11:26:02 +0200 Subject: [PATCH] fix: felt ptr for get contract address --- dojo.h | 2 +- dojo.hpp | 2 +- src/c/mod.rs | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/dojo.h b/dojo.h index de1cc44..6f0e7bc 100644 --- a/dojo.h +++ b/dojo.h @@ -718,7 +718,7 @@ struct Resultbool wait_for_transaction(struct Provider *rpc, struct FieldElement struct FieldElement hash_get_contract_address(struct FieldElement class_hash, struct FieldElement salt, - const Felt *constructor_calldata, + const struct FieldElement *constructor_calldata, uintptr_t constructor_calldata_len, struct FieldElement deployer_address); diff --git a/dojo.hpp b/dojo.hpp index 3d48a07..5ad9b45 100644 --- a/dojo.hpp +++ b/dojo.hpp @@ -920,7 +920,7 @@ Result wait_for_transaction(Provider *rpc, FieldElement txn_hash); FieldElement hash_get_contract_address(FieldElement class_hash, FieldElement salt, - const Felt *constructor_calldata, + const FieldElement *constructor_calldata, uintptr_t constructor_calldata_len, FieldElement deployer_address); diff --git a/src/c/mod.rs b/src/c/mod.rs index 34c6594..5041aaf 100644 --- a/src/c/mod.rs +++ b/src/c/mod.rs @@ -653,7 +653,7 @@ pub unsafe extern "C" fn wait_for_transaction( pub unsafe extern "C" fn hash_get_contract_address( class_hash: types::FieldElement, salt: types::FieldElement, - constructor_calldata: *const Felt, + constructor_calldata: *const types::FieldElement, constructor_calldata_len: usize, deployer_address: types::FieldElement, ) -> types::FieldElement { @@ -662,6 +662,10 @@ pub unsafe extern "C" fn hash_get_contract_address( let constructor_calldata = unsafe { std::slice::from_raw_parts(constructor_calldata, constructor_calldata_len).to_vec() }; + let constructor_calldata = constructor_calldata + .iter() + .map(|f| (&f.clone()).into()) + .collect::>(); let deployer_address = (&deployer_address).into(); let address = get_contract_address(salt, class_hash, &constructor_calldata, deployer_address);