fix(runtime-c-api) wasmer_serialized_module_from_bytes accepts bytes + length instead of wasmer_byte_array.

This commit is contained in:
Ivan Enderlin
2019-03-19 16:24:59 +01:00
parent 46edd20725
commit 57a82fa5cf
4 changed files with 13 additions and 6 deletions

View File

@ -639,7 +639,8 @@ pub unsafe extern "C" fn wasmer_serialized_module_bytes(
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn wasmer_serialized_module_from_bytes( pub unsafe extern "C" fn wasmer_serialized_module_from_bytes(
serialized_module: *mut *mut wasmer_serialized_module_t, serialized_module: *mut *mut wasmer_serialized_module_t,
serialized_module_bytes: *const wasmer_byte_array, serialized_module_bytes: *const uint8_t,
serialized_module_bytes_length: uint32_t,
) -> wasmer_result_t { ) -> wasmer_result_t {
if serialized_module.is_null() { if serialized_module.is_null() {
update_last_error(CApiError { update_last_error(CApiError {
@ -649,8 +650,8 @@ pub unsafe extern "C" fn wasmer_serialized_module_from_bytes(
} }
let serialized_module_bytes: &[u8] = slice::from_raw_parts( let serialized_module_bytes: &[u8] = slice::from_raw_parts(
(*serialized_module_bytes).bytes, serialized_module_bytes,
(*serialized_module_bytes).bytes_len as usize, serialized_module_bytes_length as usize,
); );
*serialized_module = Box::into_raw(Box::new(serialized_module_bytes)) as _; *serialized_module = Box::into_raw(Box::new(serialized_module_bytes)) as _;

View File

@ -64,7 +64,11 @@ int main()
assert(call_result == WASMER_OK); assert(call_result == WASMER_OK);
wasmer_serialized_module_t *serialized_module_two = NULL; wasmer_serialized_module_t *serialized_module_two = NULL;
wasmer_result_t serialized_module_from_bytes_result = wasmer_serialized_module_from_bytes(&serialized_module_two, &serialized_module_bytes); wasmer_result_t serialized_module_from_bytes_result = wasmer_serialized_module_from_bytes(
&serialized_module_two,
serialized_module_bytes.bytes,
serialized_module_bytes.bytes_len
);
assert(serialized_module_from_bytes_result == WASMER_OK); assert(serialized_module_from_bytes_result == WASMER_OK);
wasmer_module_t *module_three = NULL; wasmer_module_t *module_three = NULL;

View File

@ -545,7 +545,8 @@ void wasmer_serialized_module_destroy(wasmer_serialized_module_t *serialized_mod
* and `wasmer_last_error_message` to get an error message. * and `wasmer_last_error_message` to get an error message.
*/ */
wasmer_result_t wasmer_serialized_module_from_bytes(wasmer_serialized_module_t **serialized_module, wasmer_result_t wasmer_serialized_module_from_bytes(wasmer_serialized_module_t **serialized_module,
const wasmer_byte_array *serialized_module_bytes); const uint8_t *serialized_module_bytes,
uint32_t serialized_module_bytes_length);
/** /**
* Frees memory for the given Table * Frees memory for the given Table

View File

@ -428,7 +428,8 @@ void wasmer_serialized_module_destroy(wasmer_serialized_module_t *serialized_mod
/// Returns `wasmer_result_t::WASMER_ERROR` upon failure. Use `wasmer_last_error_length` /// Returns `wasmer_result_t::WASMER_ERROR` upon failure. Use `wasmer_last_error_length`
/// and `wasmer_last_error_message` to get an error message. /// and `wasmer_last_error_message` to get an error message.
wasmer_result_t wasmer_serialized_module_from_bytes(wasmer_serialized_module_t **serialized_module, wasmer_result_t wasmer_serialized_module_from_bytes(wasmer_serialized_module_t **serialized_module,
const wasmer_byte_array *serialized_module_bytes); const uint8_t *serialized_module_bytes,
uint32_t serialized_module_bytes_length);
/// Frees memory for the given Table /// Frees memory for the given Table
void wasmer_table_destroy(wasmer_table_t *table); void wasmer_table_destroy(wasmer_table_t *table);