mirror of
https://github.com/fluencelabs/wasmer
synced 2024-12-13 06:15:33 +00:00
Merge branch 'master' into feature/llvm-cgapi
This commit is contained in:
commit
080220c6a7
@ -33,7 +33,13 @@ impl Memory {
|
|||||||
|
|
||||||
let protect = protection.to_protect_const();
|
let protect = protection.to_protect_const();
|
||||||
|
|
||||||
let ptr = unsafe { VirtualAlloc(ptr::null_mut(), size, MEM_RESERVE, protect) };
|
let flags = if protection == Protect::None {
|
||||||
|
MEM_RESERVE
|
||||||
|
} else {
|
||||||
|
MEM_RESERVE | MEM_COMMIT
|
||||||
|
};
|
||||||
|
|
||||||
|
let ptr = unsafe { VirtualAlloc(ptr::null_mut(), size, flags, protect) };
|
||||||
|
|
||||||
if ptr.is_null() {
|
if ptr.is_null() {
|
||||||
Err("unable to allocate memory".to_string())
|
Err("unable to allocate memory".to_string())
|
||||||
@ -229,3 +235,25 @@ fn round_up_to_page_size(size: usize, page_size: usize) -> usize {
|
|||||||
fn round_down_to_page_size(size: usize, page_size: usize) -> usize {
|
fn round_down_to_page_size(size: usize, page_size: usize) -> usize {
|
||||||
size & !(page_size - 1)
|
size & !(page_size - 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn clone() {
|
||||||
|
// these should work
|
||||||
|
let _ = Memory::with_size_protect(200_000, Protect::Read)
|
||||||
|
.unwrap()
|
||||||
|
.clone();
|
||||||
|
let _ = Memory::with_size_protect(200_000, Protect::ReadWrite)
|
||||||
|
.unwrap()
|
||||||
|
.clone();
|
||||||
|
let _ = Memory::with_size_protect(200_000, Protect::ReadExec)
|
||||||
|
.unwrap()
|
||||||
|
.clone();
|
||||||
|
|
||||||
|
// this would cause segmentation fault as uncommited memory with no access
|
||||||
|
//let _ = Memory::with_size_protect(200_000, Protect::None).unwrap().clone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user