mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-07 13:18:20 +00:00
Merge pull request #18 from wasmerio/fix/memory-not-growing
Debug memory not growing bug
This commit is contained in:
@@ -213,7 +213,7 @@ pub unsafe extern "C" fn wasmer_wasi_generate_default_import_object() -> *mut wa
|
||||
let mut wasi_env = wasi::WasiEnv::new(wasi_state);
|
||||
// this API will now leak a `Memory`
|
||||
let memory_type = MemoryType::new(0, None, false);
|
||||
let memory = Memory::new(store, memory_type);
|
||||
let memory = Memory::new(store, memory_type).expect("create memory");
|
||||
wasi_env.set_memory(&memory);
|
||||
// TODO(mark): review lifetime of `Memory` here
|
||||
let import_object = Box::new(wasi::generate_import_object_from_env(
|
||||
|
||||
@@ -69,9 +69,18 @@ pub unsafe extern "C" fn wasmer_memory_new(
|
||||
};
|
||||
let store = crate::get_global_store();
|
||||
let desc = MemoryType::new(Pages(limits.min), max, false);
|
||||
let new_memory = Memory::new(store, desc);
|
||||
*memory = Box::into_raw(Box::new(new_memory)) as *mut wasmer_memory_t;
|
||||
wasmer_result_t::WASMER_OK
|
||||
match Memory::new(store, desc) {
|
||||
Ok(new_memory) => {
|
||||
*memory = Box::into_raw(Box::new(new_memory)) as *mut wasmer_memory_t;
|
||||
wasmer_result_t::WASMER_OK
|
||||
}
|
||||
Err(err) => {
|
||||
update_last_error(CApiError {
|
||||
msg: err.to_string(),
|
||||
});
|
||||
wasmer_result_t::WASMER_ERROR
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Grows a memory by the given number of pages (of 65Kb each).
|
||||
@@ -105,8 +114,13 @@ pub extern "C" fn wasmer_memory_grow(memory: *mut wasmer_memory_t, delta: u32) -
|
||||
let grow_result = memory.grow(Pages(delta));
|
||||
|
||||
match grow_result {
|
||||
Some(_) => wasmer_result_t::WASMER_OK,
|
||||
_ => wasmer_result_t::WASMER_ERROR,
|
||||
Ok(_) => wasmer_result_t::WASMER_OK,
|
||||
Err(err) => {
|
||||
update_last_error(CApiError {
|
||||
msg: err.to_string(),
|
||||
});
|
||||
wasmer_result_t::WASMER_ERROR
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -111,8 +111,7 @@ add_test(test-instantiate test-instantiate)
|
||||
|
||||
target_link_libraries(test-memory general ${WASMER_LIB})
|
||||
target_compile_options(test-memory PRIVATE ${COMPILER_OPTIONS})
|
||||
# TODO: reenable this test
|
||||
#add_test(test-memory test-memory)
|
||||
add_test(test-memory test-memory)
|
||||
|
||||
target_link_libraries(test-module general ${WASMER_LIB})
|
||||
target_compile_options(test-module PRIVATE ${COMPILER_OPTIONS})
|
||||
|
||||
@@ -40,7 +40,7 @@ int main()
|
||||
char *error_str = malloc(error_len);
|
||||
wasmer_last_error_message(error_str, error_len);
|
||||
printf("Error str: `%s`\n", error_str);
|
||||
assert(0 == strcmp(error_str, "Failed to add pages because would exceed maximum number of pages for the memory. Left: 22, Added: 15"));
|
||||
assert(0 == strcmp(error_str, "The memory could not grow: current size 12 pages, requested increase: 10 pages"));
|
||||
free(error_str);
|
||||
|
||||
wasmer_memory_t *bad_memory = NULL;
|
||||
@@ -58,7 +58,7 @@ int main()
|
||||
char *error_str2 = malloc(error_len2);
|
||||
wasmer_last_error_message(error_str2, error_len2);
|
||||
printf("Error str 2: `%s`\n", error_str2);
|
||||
assert(0 == strcmp(error_str2, "Unable to create because the supplied descriptor is invalid: \"Max number of memory pages is less than the minimum number of pages\""));
|
||||
assert(0 == strcmp(error_str2, "The memory plan is invalid because the maximum (10 pages) is less than the minimum (15 pages)"));
|
||||
free(error_str2);
|
||||
|
||||
printf("Destroy memory\n");
|
||||
|
||||
Reference in New Issue
Block a user