1
Fork 0

malloc should return null for zst allocs

This commit is contained in:
Oliver Schneider 2017-06-22 08:52:53 +02:00 committed by GitHub
parent a630677b01
commit a805606d45

View file

@ -561,14 +561,20 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> {
match &link_name[..] { match &link_name[..] {
"malloc" => { "malloc" => {
let size = self.value_to_primval(args[0], usize)?.to_u64()?; let size = self.value_to_primval(args[0], usize)?.to_u64()?;
let align = self.memory.pointer_size(); if size == 0 {
let ptr = self.memory.allocate(size, align)?; self.write_primval(dest, PrimVal::Bytes(0), dest_ty)?;
self.write_primval(dest, PrimVal::Ptr(ptr), dest_ty)?; } else {
let align = self.memory.pointer_size();
let ptr = self.memory.allocate(size, align)?;
self.write_primval(dest, PrimVal::Ptr(ptr), dest_ty)?;
}
} }
"free" => { "free" => {
let ptr = args[0].read_ptr(&self.memory)?.to_ptr()?; let ptr = args[0].read_ptr(&self.memory)?;
self.memory.deallocate(ptr)?; if !ptr.is_null() {
self.memory.deallocate(ptr.to_ptr()?)?;
}
} }
"syscall" => { "syscall" => {